本文實例講述了C#處理MySql多個返回集的方法。分享給大家供大家參考。具體方法如下:
關于Mysql返回多個集java和Php的較多,但是C#的完整代碼好像沒見過,研究了一下做個封裝以后用
做一個Mysql的簡單分頁查詢,有兩個返回集
Sql語句如下
查看MySqlDataAdapter類

現(xiàn)在多了很多FillAsync的方法,用的Task異步寫入。關于Task的實例可以參看這篇博客,各種例子是很好的
可以看到里面有我們需要的方法哈,那就是
思路就出來了,通過判斷NextResult的結果是否為false,來結束返回集的查詢,通過MySqlDataAdapter類的FillAsync的方法對每個結果進行填充
MySqlDataAdapter mysqldata = new MySqlDataAdapter();
MySqlCommand sqlCommand = new MySqlCommand();
sqlCommand.CommandText = StoredName;//存儲過程名稱
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Connection = conn;
for (int i = 0; i < Parameters.Count; i++)
{
sqlCommand.Parameters.AddWithValue(Parameters[i].name, Parameters[i].pvalue);
}
conn.Open();
List<DataTable> dts = new List<DataTable>();
MySqlDataReader mysqlreser = sqlCommand.ExecuteReader();//mysqlreader無構造函數(shù)
bool re = true;
System.Threading.CancellationToken _cts;//用于Cancel用的
while (re)
{
DataTable dt = new DataTable();
mysqldata.FillAsync(dt, mysqlreser).Wait(_cts);//等待線程完成
dts.Add(dt);
re = mysqlreser.NextResult();//取下一個結果集
// Trace.WriteLine(dt.Rows.Count);
}
conn.Close();
return dts;
}
這里我用的阻塞主線程等待dt完成填充,不知道是否合適
conn是連接數(shù)據(jù)庫用的連接實例MySqlConnection
sqlparameters是我聲明的一個結構體,用來保存mysql的存儲過程的輸入?yún)?shù)
希望本文所述對大家的C#程序設計有所幫助。
新聞熱點
疑難解答