麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#處理MySql多個返回集

2019-11-17 01:54:08
字體:
來源:轉載
供稿:網友

C#處理MySQL多個返回集

關于Mysql返回多個集javaphp的較多,但是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類

image

現在多了很多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;        }    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频国产 | 日韩欧美电影一区二区三区 | 国产日韩久久久久69影院 | 欧美日韩中文字幕在线视频 | 欧美日韩国产成人在线观看 | 久久亚洲国产精品 | 黄色免费电影网址 | 免费小毛片| 久久精品二区 | 亚洲成人在线视频网 | 国产免费高清在线视频 | 欧美黄色一级带 | 久久精品亚洲一区二区 | 99亚洲伊人久久精品影院红桃 | 国产精品久久久久久模特 | bt 自拍 另类 综合 欧美 | 久久精品a一级国产免视看成人 | 色呦呦一区二区三区 | 国产高潮好爽受不了了夜色 | 国产精品久久久久久久久久妇女 | 亚洲成人免费视频在线 | 欧美日韩在线视频一区 | 国产91一区二区三区 | 我爱我色成人网 | 欧美女同hd | 久久蜜桃精品一区二区三区综合网 | 精品一区久久久 | 国产免费观看a大片的网站 欧美成人一级 | 91网在线播放| 一级做a爰片性色毛片2021 | 欧美一级理论 | 国产一区亚洲 | 亚洲成人激情av | 久久亚洲成人 | 97香蕉超级碰碰久久免费软件 | 久久色播| 国产午夜亚洲精品 | 99在线精品视频免费观看20 | 久久久精品99 | 精品一区二区三区免费视频 | 日本黄色一级电影 |