程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#處置MySql多個前往集的辦法

C#處置MySql多個前往集的辦法

編輯:C#入門知識

C#處置MySql多個前往集的辦法。本站提示廣大學習愛好者:(C#處置MySql多個前往集的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#處置MySql多個前往集的辦法正文


本文實例講述了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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved