//注意參數的用法
string SqlText = @"
select * from [tableName] where condition1=?condition1 and condition2=?condition2
";
using (MySqlConnection conn = new MySqlConnection( "連接字符串"))
{
conn.Open();
MySqlCommand command = new MySqlCommand(SqlText, conn);
command.CommandTimeout = 500; // 此處設置command的超時時間
command.Parameters.Add(new MySqlParameter("?condition1",value1)); //注意參數的替換方式
command.Parameters.Add(new MySqlParameter("?condition2",value2));
MySqlDataReader retReader = command.ExecuteReader(); //用DataReader讀數據
while (retReader.Read()) //開始讀數據
{
//對數據進行處理
retReader["columeName"].ToString() ;
}
}
SqlConnection.ConnectionTimeout :
1. 說明: 獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。
2. 默認值:等待連接打開的時間(以秒為單位)。默認值為 15 秒。
3. 備注:值 0 指示無限制
4. 只讀
SqlCommand.CommandTimeout
1. 說明:獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間。
2. 默認值:等待命令執行的時間(以秒為單位)。默認為 30 秒。//注意,當我們處理大數據量的數據時,要設置CommandTimeout
3. 備注:值 0 指示無限制,在 CommandTimeout 中應避免值 0,否則會無限期地等待執行命令。
4. 可讀可寫
特別注意:
"超時時間已到。在操作完成之前超時時間已過或服務器未響應"
類似這種錯誤,一般是 SqlCommand.CommandTimeout 或者 SqlBulkCopy.BulkCopyTimeout 的時間超時, 而不是 SqlConnection.ConnectionTimeout。