C#对SQL数据库操作类简介:Connection、Command、DataReader、DataSet、DataAdapter

    在说C#操作数据库之前需要先说下ADO.NET。ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。

    ADO.NET可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ADO.NET 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。ADO.NET类别 (Class) 位于 System.Data.dll 中,我们操作数据库使用的便是ADO.NET中的几个类,这几个类分别为:

1.Connection类:用于创建于数据库的连接。

2.Command类:用于下达SQL命令

3.DataReader类:读取数据

4.DataSet类:数据集

5.DataAdapter类:数据适配命令

以上便是我们操作数据库所使用的几个类,下面我们来分别看一下。

 

一、Connection

    想要操作数据库,就必须先与数据库建立连接。Connection便是用于建立与数据库的联系的类。

    创建于数据库的连接可以归纳为三个步骤:

  1. 创建连接字符串;
  2. 创建Connection对象;
  3. 打开数据库;

1.连接字符串:

    创建用于SQL数据库连接的字符串一般有两种,一种是Windows认证方式字符串;另一种是SQL Server认证方式字符串;

  • Windows认证方式字符串格式:Server=服务器名称; integrated security=SSPI; Initial Catalog=数据库名称;
  • SQL Server认证方式字符串格式:Server=服务器名称; user=登录SQL的用户名; password=用户名对应的密码; database=数据的名称;

其中如果本机上的数据库,服务器名称可以有四种表示方式:1.计算机名;2.localhost;3..;4.IP地址;

2.创建Connection对象需要先引用命名空间System.Data.SqlClient; 创建对象格式为:

    SqlConnection 对象名 = new SqlConnection(连接字符串);

3.打开与关闭数据库则是调用SqlConnection对象的方法open()与close();可以与try{}catch{}finally{}结合使用。

放个代码例子:

 1 using System.Data.SqlClient;//应用命名空间
 2 
 3             //定义字符串
 4             string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
 5             //创建连接对象
 6             SqlConnection myConnection = new SqlConnection(connectionStr);
 7             //测试是否连接成功
 8             try
 9             {
10                 myConnection.Open();
11             }
12             catch
13             {
14                 MessageBox.Show("数据库连接错误","错误提示");
15             }
16             finally
17             {
18                 myConnection.Close();
19             }

 

 

二、Command下达SQL命令

使用Command的步骤:

  1. 创建命令字符串;
  2. 创建Command对象;
  3. 写入命令;

1.命令字符串即为SQL命令语句;

2.创建Command对象格式为:

    SqlCommand myCommand = new SqlCommand(命令字符串,Connection对象名);

3.写入命令可以用Command的方法:

方法返回值描述
ExecuteNonQuery()不返回任何结果,常用于updata/insert/delete等不带返回值的命令
ExecuteScalar()返回一个值,用于只带一个返回值得命令,如count/max/min等
ExecuteReader()返回一个IDataReader

放个代码例子:

 1             //定义字符串
 2             string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
 3             //创建连接对象
 4             SqlConnection myConnection = new SqlConnection(connectionStr);
 5             //测试是否连接成功
 6             try
 7             {
 8                 myConnection.Open();//打开数据库
 9                 string commandSQLStr = "insert into mytable001(姓名,性别,年龄)values('张三','男',30)";//命令字符串
10                 SqlCommand myCommand = new SqlCommand(commandSQLStr,myConnection);//创建Command对象
11                 myCommand.CommandTimeout = 5;//设置超时时间为5秒
12                 myCommand.ExecuteNonQuery();
13             }
14             catch
15             {
16                 MessageBox.Show("数据库连接错误","错误提示");
17             }
18             finally
19             {
20                 myConnection.Close();//关闭数据库
21             }

 

三、DataReader读取数据

    DataReader对象提供了顺序的,只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。

    由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集的一条数据,所以使用Datareader对象的效率比较高,如果要查询大量数据,同事不需要随机访问和修改数据,DataReader是优先的选择。DataReader对象有许多的属性和方法:

属性:

  • FieldCount属性:该属性用来表示由DataReader得到的一行数据中的字段数。
  • HasRows属性:该属性用来表示DataReader是否包含数据。
  • IsClosed属性:该属性用来表示DataReader对象是否关闭。

方法:

  • Close 将DataReader 对象关闭
  • GetDataTypeName 取得指定字段的数据型态
  • GetName 取得指定字段的字段名称
  • GetOrdinal 取得指定字段名称在纪录中的顺序
  • GetValue 取得指定字段的数据
  • GetValues 取得全部字段的数据
  • IsNull 用来判断字段内是否为Null 值
  • NextResult 用来和SQL Script 搭配使用,表示取得下一个结果
  • Read 让DataReader 读取下一笔记录,如果有读到数据则传回True,若没有纪录则传回False

放个代码例子:

 1             //定义字符串
 2             string connectionStr = "Server=localhost;integrated security=SSPI;Initial Catalog=mydb001";
 3             //创建连接对象
 4             myConnection = new SqlConnection(connectionStr);
 5             //测试是否连接成功
 6             try
 7             {
 8                 myConnection.Open();//打开数据库
 9                 string commandSQLStr = "select * from mytable001";//命令字符串
10                 SqlCommand myCommand = new SqlCommand(commandSQLStr, myConnection);//创建Command对象
11                 myCommand.CommandTimeout = 5;//设置超时时间为5秒
12                 SqlDataReader myDataReader = myCommand.ExecuteReader();
13             }
14             catch
15             {
16                 MessageBox.Show("数据库连接错误","错误提示");
17             }
18             finally
19             {
20                 myConnection.Close();//关闭数据库
21             }

 

四、DataSet数据集

    DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的。

    DataSet对象由一组DataTable对象组成,这些对象与DataRelation对象互相关联。这些DataSet对象又包含Rows集合,Columns集合,Rows集合由多个DataRow对象组成,Columns集合由多个DataColumn对象组成。

    由于DataSet对象很像数据库,所以可以像访问关系型数据库那样访问DataSet,例如在DataSet中添加,删除表,在表中进行查询数据,删除数据等操作。

        DataSet对象有常用的方法:

 

五、DataAdapter数据适配命令

    DataAdapter对象是DataSet和数据之间的桥梁,可以建立并初始化数据表对数据源执行SQL指令,与DataSet对象结合,提供DataSet对象存储数据,可视为DataSet对象的操作核心。

    在使用DataAdapter对象时,只需要设置表示SQL命令和数据库连接的两个参数,就可以通过Fill方法把查询结果放置在一个DataSet对象中。DataAdapter对象可用于执行数据库的命令操作,含有四个不同的操作命令:

  • SelectCommand:用来选取数据源中的记录;
  • InsertCommand:用来向数据源中新插入一条记录;
  • UpdateCommand:用来更新数据源中的数据;
  • DeleteCommand:用来删除数据源中的记录。
DataAdapter的两个主要方法:
  • Fill:从数据源增加或刷新行,并将这些行放到DataSet表中。
  • Updata:将DataSet表的更改传送到相应的数据源中。
使用带SQL Server .NET数据提供程序的DataSet的步骤如下:
(1)创建SqlConnection对象,连接到SQL Server数据库。
(2)创建SqlDataAdapter对象。该对象包含能够指向4个SqlCommand对象的属性,这些对象指定SQL语句在数据库中进行SELECT、INSERT、DELETE和UPDATE等数据操作。
(3)创建包含一个或多个表的DataSet对象。
(4)使用SqlDataAdapter对象,通过调用Fill方法来填充DataSet表。SqlDataAdapter隐式执行包含SELECT语句的SqlCommand对象。
(5)修改DataSet中的数据。可以通过编程方式来执行修改,或者将DataSet绑定到用户界面控件(例如DataGrid),然后在控件中更改数据。
(6)在准备将数据更改返回数据库时,可以使用SqlDataAdapter并调用Update方法。SqlDataAdapter对象隐式使用其SqlCommand对象对数据库执行INSERT、DELETE和UPDATE语句。

 

转载于:https://www.cnblogs.com/nicewe/p/8580873.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值