C#处理MySql多个返回集的方法
本文实例讲述了C#处理MySql多个返回集的方法。分享给大家供大家参考。具体方法如下:
关于Mysql返回多个集java和Php的较多,但是C#的完整代码好像没见过,研究了一下做个封装以后用
做一个Mysql的简单分页查询,有两个返回集
Sql语句如下
select
t.PosterID,
t.PostTime,
t.Title
fromapp_us_postertORDERBYt.PostTimedescLIMITstartPageNum,endPageNum;
这里MySql中返回是两个集,如何通过C#获取这两个值呢,需要用到MySqlDataAdapter和MySqlDataReader这两个类
查看MySqlDataAdapter类
现在多了很多FillAsync的方法,用的Task异步写入。关于Task的实例可以参看这篇博客,各种例子是很好的
可以看到里面有我们需要的方法哈,那就是
如果想添加取消操作的可以用
MySqlDataReader是有一个NextResult的方法可以用来循环读取返回集,并返回bool类型
思路就出来了,通过判断NextResult的结果是否为false,来结束返回集的查询,通过MySqlDataAdapter类的FillAsync的方法对每个结果进行填充
///读取多个返回集,返回List<DataTable>
///</summary>
///<paramname="StoredName"></param>
///<paramname="Parameters"></param>
///<returns></returns>
publicList<DataTable>StroedGetTableList(stringStoredName,List<sqlparameters>Parameters)
{
MySqlDataAdaptermysqldata=newMySqlDataAdapter();
MySqlCommandsqlCommand=newMySqlCommand();
sqlCommand.CommandText=StoredName;//存储过程名称
sqlCommand.CommandType=CommandType.StoredProcedure;
sqlCommand.Connection=conn;
for(inti=0;i<Parameters.Count;i++)
{
sqlCommand.Parameters.AddWithValue(Parameters[i].name,Parameters[i].pvalue);
}
conn.Open();
List<DataTable>dts=newList<DataTable>();
MySqlDataReadermysqlreser=sqlCommand.ExecuteReader();//mysqlreader无构造函数
boolre=true;
System.Threading.CancellationToken_cts;//用于Cancel用的
while(re)
{
DataTabledt=newDataTable();
mysqldata.FillAsync(dt,mysqlreser).Wait(_cts);//等待线程完成
dts.Add(dt);
re=mysqlreser.NextResult();//取下一个结果集
// Trace.WriteLine(dt.Rows.Count);
}
conn.Close();
returndts;
}
这里我用的阻塞主线程等待dt完成填充,不知道是否合适
补充一下
conn是连接数据库用的连接实例MySqlConnection
sqlparameters是我声明的一个结构体,用来保存mysql的存储过程的输入参数
{
publicstringname;//存储过程的输入字符名称
publicobjectpvalue;//存储过程的输入变量
publicsqlparameters(stringnames,objectpvalues)
{
name=names;
pvalue=pvalues;
}
}
希望本文所述对大家的C#程序设计有所帮助。
相关文章
- MySQL查询前十条记录的实现方法(mysql查询前10条记录)
- MySQL:简单快捷的刷新数据库操作(mysql刷新数据库)
- 解决MySQL乱码:5步轻松搞定(mysql乱码解决方法)
- MySQL三大范式:深入理解数据完整性(mysql三大范式)
- MySQL数据库:入门指南(mysql数据库入门)
- MySQL开源监控:构建全方位性能保障(mysql开源监控工具)
- Mysql中给字段赋予有效值的方法(mysql给字段赋值)
- MySQL进程死锁:解决方案实施(mysql进程死锁)
- MySQL处理二进制数据的秘籍(mysql二进制数据)
- 一步步教你如何进行 MySQL 数据库分表优化(mysql数据库分表)
- MySQL数据库连接断开的问题处理(mysql断开数据库)
- MySQL查询显示用户名表方法简介(mysql查看用户名表)
- MySQL数据库导出实践指南(mysql导出db)
- 维护 MySQL服务器优化与维护(mysql服务器)
- MySQL 别名:轻松修改字段名称(mysql别名字段)
- MySQL中嵌套查询的使用方法详解(mysql中的嵌套查询)
- 学会寻址MySQL:访问数据库的简单方法(怎么访问mysql数据库)
- MySQL的日志路径及使用方法详解(mysql 日志路径)
- 如何利用MySQL查找重复数据?(mysql查找数据重复)
- 使用ado技术查看MySql数据库(ado查看mysql)
- 命令行下MySQL数据库的运行管理(cmd mysql运行)
- MySQL函数的创建方法详解(mysql中函数创建)
- MySQL的三种锁机制简介(mysql三种锁机制)
- MySQL三段封锁协议保证数据一致性的有效方法(mysql三段封锁协议)
- 状态但无法连接数据库无法连接数据库的 MySQL 一直处于启动状态(mysql一直处于启动)
- MySQL索引问题无法创建索引的解决方法(mysql不能创建索引)
- MySQL默认密码不显示问题解决方法(mysql不显示默认密码)