ADO.NET数据库访问技术
一. ADO.NET的定义
ADO.NET结构模型如下所示: 图1. ADO.NET结构模型 ADO.NET是一个类库,这些类提供了很多的对象,可用于完成数据库连接和增删查改等操作。其中包括如下五个对象: 1)Connection:用来连接数据库(SQL Server使用的是SqlConnection对象); 2)Command:用来对数据库执行SQL命令,如增删查改等操作; 3)DataReader:用来从数据库中返回只读数据,用数据源填充DataSet对象; 4)DataAdapter:与DataSet对象相结合使用,实现对数据库的控制; 5)DataSet:可看作离线时内存中的数据库; 这五个对象提供了两种读取数据库的方式; 第一种方式:使用Connection、Command、DataReader,其权限只能读取或查询数据库; 第二种方式:使用Connection、Command、DataAdapter、DataSet,其权限能进行各种数据库的操作。 ADO.NET读取数据库操作示意图: 图1. ADO.NET结构模型 using System.Data.SqlClient; string source = "server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa"; SqlConnection conn = new SqlConnection(source); conn.Open(); // 对数据库数据进行操作 conn.Close();
(2). 定义数据库连接字符串: 第一种方法:直接把数据库连接字符串存放在字符串对象中,如上代码所示; 第二种方法Web:将数据库连接信息存放在web.config配置文件中,然后通过使用ConfigurationStringSettings类进行调用。来个例子说明一下: (a). 首先,在web.config配置文件的部分定义数据库连接信息: <configuration> <connectionStrings> <add name="myDatabase" connectionString="server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
复制代码 代码如下:string connstring = ConfigurationManager.ConnectionStrings["myDatabase"].ConnectionString;
2. 创建数据库连接 string conn = new SqlConnection(connString); 2)打开数据库: conn.Open(); 一般情况下,当在.NET中使用“稀缺”的资源时,如数据库连接、窗口或图形对象,最好确保每个资源在使用完毕后立即关闭。尽管.NET的设计人员实现了自动垃圾收集机制,垃圾最终会被回收,但仍需要尽可能早地释放资源,以避免出现资源匮乏的情况。 当编写访问数据库的代码时,因为使连接打开的时间略长于需要的时间,就可能影响其他会话。在极端的情况下,不关闭连接可能会使其他用户无法进入一整组数据表,极大地降低应用程序的性能。主要有两种方式可以确保数据库连接等类似的“稀缺”资源在使用完后立即释放。这两种方式如下: (1)第一种方式:采用try...catch...finally语句块 确保在finally中关闭任何已打开的连接。 try { // open the connection conn.Open(); // 对数据库数据进行操作 } catch (SqlException ex) { // log the exception } finally { conn.Close(); }
using(SqlConnection conn = new SqlConnection(connstring)){ // Open the connection conn.Open(); // 对数据库数据进行操作 }
(1) 创建SQL数据库操作命令: sqlQuery查询语句具体规则请详见我的系列文章:【读书笔记】SQL Server查询语句_邓智容 (2) 创建Command对象: (a). 方法一: 复制代码 代码如下:SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = "SQL语句"; (b). 方法二: SqlCommand command = new SqlCommand("SQL语句",conn); 备注: 1). SQL查询语句若含有C#程序的变量并以字符串形式连接,则应注意数据为非数字的变量应用单引号括起来; 2). 在SQL查询语句中使用参数化查询语句的话,譬如: command.CommandText = "SELECT * FROM myTable WHERE siteName=@siteName"; 当需要给该参数赋值时,可以使用Command对象建立参数对象,然后再赋值: 复制代码 代码如下:command.Parameters.Add(new SqlParameter(@siteName,siteName)); command.Parameters["@siteName"].Value = "http://#"; 备注: 在.Net Framework 2.0中SqlClient增加了AddWithValue(string parameterName,object value)方法。该方法简化了调用储存过程的输入参数过程,在运行时对所输入的数据类型进行判断,获取对应的数据库类型。 因此该方法在运行效率上比用 Add(string parameterName,SqlDbType sqlDbType,int size,string sourceColumn)方法要低。 在效率要求较高的地方仍然建议使用Add()方法,其它场合可以使用AddWithValue()简化代码编写量。
conn.Close();
DataSet <---> DataAdapter <---> 数据源 1. 创建DataAdapter、DataTable对象(使用的是SQL Server数据库) 复制代码 代码如下:SqlAdapter da = new SqlAdapter("sqlQuery查询语句",conn); DataSet = ds = new DataSet(); DataTable dt = new DataTable(); 2. 将数据填充到DataTable对象 da.Fill(ds,"TableName"); dt = ds.Tables["TableName"]; 3. 对DataTable中的数据进行处理 TataTable对象的属性和方法有: 名称 属性/方法 说明 通过以上对ADO.NET数据库访问技术的介绍,希望对大家有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |