mysqldatareader获取整行数据给datarow_C# sqladapter 与sqldataReader
ADO.NET提供了丰富的数据库操作,在这些操作中SqlConnection和SqlCommand类是必须使用的,但接下来可以分为两类操作:
第一类是用SqlDataReader直接一行一行的读取数据库。
第二类是SqlDataAdapter联合DataSet来读取数据。
下面通过两个子程序,来看看它们的用法:
SqlDataReaderprivate void button1_Click(object sender, EventArgs e)
{ string cnn_char = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;User Instance=True"; using (SqlConnection conn = new SqlConnection(cnn_char))
{
conn.Open(); using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from T_User where UserName=@User";
cmd.Parameters.Add(new SqlParameter("User",textUserName.Text)); using(SqlDataReader reader=cmd.ExecuteReader())
{ if (reader.Read())
{ int errorTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));
}
}
}
}
}
接下来是SqlDataAdapter:
SqlDataAdapterprivate void button3_Click(object sender, EventArgs e)
{ string cnn_char = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;User Instance=True"; using (SqlConnection conn = new SqlConnection(cnn_char))
{
conn.Open(); using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from T_User";
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//将SqlCommand与SqlDataAdapter绑定 adapter.Fill(dataset);
DataTable table = dataset.Tables[0]; foreach(DataRow row in table.Rows)
{ string name=Convert.ToString(row["UserName"]);
MessageBox.Show(name);
}
}
}
}
通过这两个事件的代码,我们可以看出,也符合前面说的规则:这两种读取数据的方法都需要SqlConnection和SqlCommand类的使用。它们的最大的区别是数据源不同:
SqlDataReader的数据源在数据库服务器上,对于程序而言,它在数据库服务器上设置了一个游标,指向一行数据,用Read()方法来对游标进行判断,当它返回false时,表示查询的数据已取完。因此,它适合数据量比较大的时候的读取,因为它不占内存,数据在数据库服务器中。它的缺点在于,当数据库服务连接断开时,不能再进行数据的读取了。
SqlDataAdapter的方式,数据源在内存中,用一个数据集DataSet类的实例进行存储。SqlDataAdapter相当于是一个桥梁,将数据库服务器中的数据读取到内存中,它的Fill( )方法完成了这个过程。因此,对于小量的数据,它的一个优点还在于,即使当服务器连接断开时,也能继续读取数据。
继续说一说SqlDataAdapter。由于SqlDataAdapter是桥梁,因此需要与一个SQL命令绑定,所SqlDataAdapter对象有一个SelectCommand属性。可以在创建SqlDataAdapter时作为参数写入构造函数中,也可以在创建实例后,赋给SelectCommand属性。dataset有集合Tables,对于每一个DataTable,有集合Rows。对于每一行row,可以使用row["列名"]来获得数据,注意row[]索引出来的是object对象,因此需要显式的转换。
mysqldatareader获取整行数据给datarow_C# sqladapter 与sqldataReader相关推荐
- mysqldatareader获取整行数据给datarow_SqlDataReader的用法(读取1整行)
datareader对象提供只读单向数据的快速传递,单向:您只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地,DataSet中的数据可以任意读取和修改 01.usi ...
- mysqldatareader获取整行数据给datarow_如何从DataReader中获得DataRow
这个需求的关键是: 所要获取的DataRow对象的结构要和真实的数据库结构相同 总体上分为俩个大方法: 1---使用DataSet或者是DataTable自身的Load方法 和 DataAda ...
- mysqldatareader获取整行数据给datarow_基于数据库类型的c#set datarow DateTime字段
我正在编写一个可以使用SQLite DB或MySql DB的程序. (如果不止一个人必须使用它,网络基础设施等......) 我写了一个通用DBType接口和两个基于DB类型实现它的类.有一个函数Da ...
- Datatable表格点击某个单元格可以获取整行数据
场景: 点击图中所属区域,可以看到该区域对应的一行信息. 解决方案: 在定义列的js中,进行处理: { data: 'name', title: '所属 ...
- 若依的框架怎么样_基于bootstrapTable的若依框架如何获取表格选中行的整行数据?...
导语 项目是基于若依框架写的,大部分的底层技术都是bootstrap. 最近在写一个项目的时候遇见一个需求,需要将子页面表格中选中的数据回传给父页面.为了减少网络请求,所以就准备直接使用子父页面传值. ...
- Request —— 获取请求行数据 获取请求头数据 获取请求体数据
1. request对象和response对象的原理 1. request和response对象是由服务器创建的.我们来使用它们 2. request对象是来获取请求消息,respon ...
- 【easyui】easyui datagrid加载成功之后选定并获取首行数据
//加载成功之后,选定并获取首行数据 onLoadSuccess:function(data){ alert("grid加载成功");var rows=$('test').data ...
- Request_获取请求行数据_方法介绍
request功能: 1. 获取请求消息数据 1. 获取请求行数据 * GET /day14/demo1?name=zhangsan HTTP/1.1 ...
- SQL查询最大值,返回整行数据
SQL查询最大值,返回整行数据 1.问题 部分数据如下,未完整展示.如何从 table_a 表中查询 p_postions 列的最大值对应的一行数据? 2.解答 方法1:先排序,再取第一条 SELEC ...
最新文章
- OFBiz + Opentaps 仓储设施 基本管理
- matlab fig格式图片转化为png格式
- 传统IP网络与MPLS网络转发的区别
- world scientific is the journal to follow
- Android View坐标系
- SAP CRM中间件调试的一些重要方法
- Error inflating class xxx.view
- 检测php加密方式,一种php加密方式
- 编写程序,删除数组中重复的元素,并统计各元素出现的次数
- 四天学会Mybatis
- Kotlin 1.2 有哪些新特性
- PHP 中数组获取不到元素
- c语言基础代码_全国计算机二级等级考试:C语言二级考试有多难?不看不知道...
- 3.Entity Framework Core 5.0 设置字段属性
- 管理感悟:套路就是文档化
- 黑苹果开启核显加速_【黑苹果】关于双显卡正确开启核显加速
- windows搭建ftp服务器,及200 227 451错误解决
- 浅谈大数据的过去、现在和未来
- 境外诈骗,最新来自senegal的邮件诈骗
- 解析为何支付宝微信二维码合一