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相关推荐

  1. mysqldatareader获取整行数据给datarow_SqlDataReader的用法(读取1整行)

    datareader对象提供只读单向数据的快速传递,单向:您只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地,DataSet中的数据可以任意读取和修改 01.usi ...

  2. mysqldatareader获取整行数据给datarow_如何从DataReader中获得DataRow

    这个需求的关键是: 所要获取的DataRow对象的结构要和真实的数据库结构相同 总体上分为俩个大方法: 1---使用DataSet或者是DataTable自身的Load方法   和   DataAda ...

  3. mysqldatareader获取整行数据给datarow_基于数据库类型的c#set datarow DateTime字段

    我正在编写一个可以使用SQLite DB或MySql DB的程序. (如果不止一个人必须使用它,网络基础设施等......) 我写了一个通用DBType接口和两个基于DB类型实现它的类.有一个函数Da ...

  4. Datatable表格点击某个单元格可以获取整行数据

    场景: 点击图中所属区域,可以看到该区域对应的一行信息. 解决方案: 在定义列的js中,进行处理: {             data: 'name',             title: '所属 ...

  5. 若依的框架怎么样_基于bootstrapTable的若依框架如何获取表格选中行的整行数据?...

    导语 项目是基于若依框架写的,大部分的底层技术都是bootstrap. 最近在写一个项目的时候遇见一个需求,需要将子页面表格中选中的数据回传给父页面.为了减少网络请求,所以就准备直接使用子父页面传值. ...

  6. Request —— 获取请求行数据 获取请求头数据 获取请求体数据

    1. request对象和response对象的原理     1. request和response对象是由服务器创建的.我们来使用它们     2. request对象是来获取请求消息,respon ...

  7. 【easyui】easyui datagrid加载成功之后选定并获取首行数据

    //加载成功之后,选定并获取首行数据 onLoadSuccess:function(data){ alert("grid加载成功");var rows=$('test').data ...

  8. Request_获取请求行数据_方法介绍

    request功能:     1. 获取请求消息数据         1. 获取请求行数据             * GET /day14/demo1?name=zhangsan HTTP/1.1 ...

  9. SQL查询最大值,返回整行数据

    SQL查询最大值,返回整行数据 1.问题 部分数据如下,未完整展示.如何从 table_a 表中查询 p_postions 列的最大值对应的一行数据? 2.解答 方法1:先排序,再取第一条 SELEC ...

最新文章

  1. OFBiz + Opentaps 仓储设施 基本管理
  2. matlab fig格式图片转化为png格式
  3. 传统IP网络与MPLS网络转发的区别
  4. world scientific is the journal to follow
  5. Android View坐标系
  6. SAP CRM中间件调试的一些重要方法
  7. Error inflating class xxx.view
  8. 检测php加密方式,一种php加密方式
  9. 编写程序,删除数组中重复的元素,并统计各元素出现的次数
  10. 四天学会Mybatis
  11. Kotlin 1.2 有哪些新特性
  12. PHP 中数组获取不到元素
  13. c语言基础代码_全国计算机二级等级考试:C语言二级考试有多难?不看不知道...
  14. 3.Entity Framework Core 5.0 设置字段属性
  15. 管理感悟:套路就是文档化
  16. 黑苹果开启核显加速_【黑苹果】关于双显卡正确开启核显加速
  17. windows搭建ftp服务器,及200 227 451错误解决
  18. 浅谈大数据的过去、现在和未来
  19. 境外诈骗,最新来自senegal的邮件诈骗
  20. 解析为何支付宝微信二维码合一

热门文章

  1. linux中的SGI(核间中断)IPI_RESCHEDULE详解
  2. 【Win32汇编】五种寻址方式
  3. [INSHack2018]Tricky-Part1
  4. MultiByteToWideChar和WideCharToMultiByte
  5. 【网络安全】针对 HTTP/2 协议的HTTP Desync攻击
  6. 003 通过内存关系找万能按键call
  7. 2、MySQL主键(PRIMARY KEY)
  8. 一个将字符串转换为整数的函数--atoi()
  9. MySQL查询的进阶操作--分页查询
  10. MyEclipse部署Tomcat服务器