純C說話:分治假幣成績源碼分享。本站提示廣大學習愛好者:(純C說話:分治假幣成績源碼分享)文章只能為提供參考,不一定能成為您想要的結果。以下是純C說話:分治假幣成績源碼分享正文
本文實例講述了C#處置MySql多個前往集的辦法。分享給年夜家供年夜家參考。詳細辦法以下:
關於Mysql前往多個集java和Php的較多,然則C#的完全代碼似乎沒見過,研討了一下做個封裝今後用
做一個Mysql的簡略分頁查詢,有兩個前往集
Sql語句以下
SELECT COUNT(*) from poster;
select
t.PosterID,
t.PostTime,
t.Title
from app_us_poster t ORDER BY t.PostTime desc LIMIT startPageNum,endPageNum;
這裡MySql中前往是兩個集,若何經由過程C#獲得這兩個值呢,須要用到MySqlDataAdapter和MySqlDataReader這兩個類
檢查MySqlDataAdapter類
如今多了許多FillAsync的辦法,用的Task異步寫入。關於Task的實例可以參看這篇博客,各類例子是很好的
可以看到外面有我們須要的辦法哈,那就是
public Task<int> FillAsync(DataTable dataTable, IDataReader dataReader);
假如想添加撤消操作的可以用
public Task<int> FillAsync(DataTable dataTable, IDataReader dataReader, CancellationToken cancellationToken)
MySqlDataReader是有一個NextResult的辦法可以用來輪回讀取前往集,並前往bool類型
思緒就出來了,經由過程斷定NextResult的成果能否為false,來停止前往集的查詢,經由過程MySqlDataAdapter類的FillAsync的辦法對每一個成果停止填充
/// <summary>
/// 讀取多個前往集,前往List<DataTable>
/// </summary>
/// <param name="StoredName"></param>
/// <param name="Parameters"></param>
/// <returns></returns>
public List<DataTable> StroedGetTableList(string StoredName, List<sqlparameters> Parameters)
{
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無結構函數
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完成填充,不曉得能否適合
mysqldata.FillAsync(dt, mysqlreser).Wait(_cts);//期待線程完成
彌補一下
conn是銜接數據庫用的銜接實例MySqlConnection
sqlparameters是我聲明的一個構造體,用來保留mysql的存儲進程的輸出參數
public struct sqlparameters
{
public string name;//存儲進程的輸出字符稱號
public object pvalue;//存儲進程的輸出變量
public sqlparameters(string names, object pvalues)
{
name = names;
pvalue = pvalues;
}
}
願望本文所述對年夜家的C#法式設計有所贊助。