************************************************
**由于本人能力有限,其中内容有误之处请大虾们指出*
**另请对C#编程有兴趣的朋友加入群:11531413 *
*************************************************
1、基本知识篇
1、1 概述
C#对数据库的操作主要基于ADO.NET。ADO(ActiveX Data Object)是一个COM组件库,包含许多类,无论是使用SQL Server类,还是使用OLE DB类,都可以使用它们。
1、1、1 命名空间
System.Data---所有一般的数据访问类
System.Data.Command---各个数据提供程序共享(或重写)的类
System.Data.Odbc----ODBC提供程序的类
System.Data.OleDB---OLE DB提供程序的类
System.Data.Oracle----Oracle提供程序的类
System.Data.SqlClient----Sql Sever提供程序的类
这些命名空间提供了在.NET数据访问中使用的类和接口。
2、基本操作篇
2、1 概述
ADO对数据库的操作都可以分为以下几步:
A、定义连接字符串
B、 定义SQLConnection对象
C、 将连接字符串与SQLConnection对象连接起来
D、打开数据库连接
E、 进行一定的操作
F、 关闭数据库连接
2、2 例子
A、定义连接字符串
串一:
string strconn=”Integrated log=Student;data source=(local);user id=sa;password=sa”
这是一个非常传统的连接字符串,数据库名为student,数据源是本地,帐号密码都为sa
串二:
string strconn=”server=(local);integrated security=SSPI;database=Student”
比较推荐用这个连接字符串,基中integrated security=SSPI参数使用Windows Authentication连接数据库服务器。最好在源代码中使用这个参数,而不是用户名和密码。它也实现了串一的功能。
B、 定义一个SQLConnection对象
SqlConnection conn=new SqlConnection();
C、 将连接字符串与Connection对象联系起来
Conn.ConnectionString=strconn
D、打开数据库连接
Conn.Open()
E、 对数据库进行操作
这一步又大致可以分成三步:
a、 定义一个操作命令字符串
string select=”Select ID,NAME from student”
b、 定义一个命令
SqlConnetion cmd=new SqlCommand(select,conn)
c、 用数据库操作命令执行
Itn rows=cmd.ExecuteNonQuery()
F、 关闭数据库连接
Conn.Close();
其中第A-C可以合成一步,如上例可以合写成
SqlConnection conn=new SqlConnection(“server=(local);integrated security=SSPI;database=Student ”);
3、效率的问题
一般情况下,当在.NET中使用在资源时,例如数据库连接、文件流连接,最好确保每个资源在使用后就立即关闭。尽管.NET的设计人员实现了自动的垃圾收集,垃圾最终都会被回收,但仍需要尽可能早地释放资源,以避免出现资源缺乏的情况。
1、1 用try…catch…finally语句块
代码:(使用上边已定义了的变量)
try
{
conn.Open();
}
catch(Execption e)
{
//如果在连接不成功进做的事
}
finally
{
conn.close();
}
1、2 使用using语句块
using(SqlConnection conn=new SqlConnection(source))
{
conn.Open();
}
在退出这个语句块时,连接自动被释放。
4、对事务的处理
事务的概念我想大家都知道了,这里我们只看C#对事务的支持。C#对数据库事务的支持使用SqlTransaction类,并用其中的Commit方法对事务进行提交,例:
SqlTransation dc=conn.BegionTransaction()
dc.Commit()
5、命令
这里所说的命令就是一个要在数据库上执行的SQL文本字符串。命令也可以是一个存储过程,或者返回表中所有列和所有行的表名。执行命令有许多方式。
A、ExecuteNonQuery()----执行一个命令,但除了返回受影响的记录条数以外,不返回任何值
B、 ExecuteReader()---执行一个命令,返回一个类型化的IDataReader,这一个数据流,可用foreach读出来
C、 ExecuteScalar()---执行一个命令,返回一个值
D、ExecuteXmlReader()---执行一个命令,返回一个XmlReader对象,它可以用于传送从数据库中返回的XML代码段
由于本人能力有限,其中内容有误之处请大虾们指出
另请对C#编程有兴趣的朋友加入群:11531413