C#中数据库的运用

在c#中对数据的管理c# 可以有数据库,文件(如xml文件,txt文件),还有一些如容器类。其中数据库的操作相对便捷,安全。
下面我们讨论如何在程序中使用数据库。将数据库加入程序中一般来说分为以下三个步骤。
1、连接数据库:建立SqlConnection对象来连接数据库;
2、执行sql语句:指定SqlCommand对象,进行sql的执行和存储过程的调用;
3、返回结果:一般使用SqlDataReader或者DataSet联合SqlDataAdapter。

Connection 对象提供与数据源的连接。
Command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
DataReader 对象从数据源中提供快速的,只读的数据流。
DataAdapter 对象提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。

在我们讨论SqlConnection之前需要了解一个重要内容,连接字符串。
那么什么是连接字符串呢?就是这样一组被格式化的键值对:
它告诉ADO.NET数据源在哪里,需要什么样的数据格式,提供什么样的访问信任级别以及其他任何包括连接的相关信息。
语法:连接字符串由一组元素组成,一个元素包含一个键值对,元素之间由“;”分开。

(1)标准的安全连接

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPass
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

(2)可信连接

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

在我们实际开发中,我们一般不会把连接字符串直接写在代码中,而是存储在配置文件里。把连接字符串写死在代码中,不便于维护,每次修改字符串时,还得重新编译代码。以ASP.NET应用程序为例,我们一般把连接字符串写在web.config配置文件的节点。例如:

<connectionStrings>
  <add name="connStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI" />
</connectionStrings>

因此,我们只需要在程序中添加相应代码来获取配置文件中的值,比如:

string connStr=
ConfigurationManager.ConnectionStrings["connStr"].ToString(); 

一、SqlConnection对象。
语法: public sealed class SqlConnection : DbConnection, ICloneable
表示 与SQL Server 数据库的连接。 此类不能被继承。
命名空间: System.Data.SqlClient
程序集: System.Data(在 System.Data.dll 中)
SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。 SqlConnection 与SqlDataAdapter和SqlCommand 一起使用,以便在连接到 Microsoft SQL Server 数据库时提高性能。

using (SqlConnection connection = new SqlConnection(
               connectionString))

关于这个类以下三个方法是必须了解的
Open: 使用 ConnectionString 所指定的设置打开数据库连接。
Dispose: 释放由 Component 使用的所有资源。
Close: 关闭与数据库的连接。 此方法是关闭任何已打开连接的首选方法。Close 方法回滚任何挂起的事务。 然后,它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接。
除了在使用完资源后人为的释放掉使用资源关闭连接外,我们有一种更为优雅的方式,那就是使用using语句句柄托管资源。

二、SqlCommand对象
命名空间: System.Data.SqlClient
程序集: System.Data(System.Data.dll 中)

应该如何将数据交给SqlCommand对象呢?
(1)通过构造函数。代码如下:

string strSQL = "Select * from tb_SelCustomer";
SqlCommand cmd = new SqlCommand(strSQL, conn);

(2)通过Command对象的属性。代码如下:

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;

常用方法:
1、ExecuteNonQuery()  增删改操作
2、ExecuteScalar()   返回第一行第一列
3、ExecuteReader()  创建一个SqlDataReader用于读取数据
4、ExecuteXmlReader()  返回System.XmlReader实例,用于读取SQLServer中的XML字段的值
5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()
6、EndExecuteNonQuery()  异步版ExecuteNonQuery()
文档参考:
http://www.cnblogs.com/kissdodog/archive/2013/09/23/3334579.html
它封装了所有对外部数据源的操作(包括增、删、查、改等SQL语句与存储过程),并在执行完成后返回合适的结果。

三、SqlDataReader和DataSet+SqlDataAdapter
两者间的区别:
1、SqlDataReader //基于连接,只读访问 适合数据量较小。
SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点
2、SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存。
3、SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。
SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作
4、写法上不同:
SqlDatReader执行前须先打开数据库,然后须生成一个COMMAND对象。再由COMMAND.EXECUTEREADER()方法赋值。完成后须手动关闭联接。
SqlCommand cmd = new SqlCommand(“select * from stu”, conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
conn.close();
SqlDataAdapter 执行时,自动打数据库,且不用Command的ExecuteReader方法进行赋值,完成后自动断开联接。

SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adptr.Fill(ds, "stu");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章