对于SQL Server数据库的访问,ADO.NET有几个常用的类:
sqlConnection:代表了一个到指定数据库的连接。他有一个常用属性,两个常用方法。
ConnectionString:连接字符串,其中包含有连接数据库及其他一些参数信息,该连接字符串的形式是由一系列键/值对构成。键值对之间用分号隔开
常用键有:
DataBase(Initial Catalog,括号中的内容可以替换括号前的内容,接下来的内容也类似):代表所要连接的数据源。
Server(Address,Addr,Data Source,Network Address):代表数据库所在的位置,本地的话用(local),外部服务器就是IP地址。
Integrated Security(Trusted_Connection):当被置为true时不必指定用户名密码,访问数据库时采用windows验证方式。置为false时需要指定登录名及密码。
User ID(UID):代表登录帐号。
Password(PWD):代表登录密码。
一个完整的连接字符串如以下形式:"Integrated Security=true;Initial Catalog=Northwind;server=(local)"
两个常用方法:Open(),Close()分别用于打开数据库连接和关闭数据库连接。需要注意的是如果打开了数据库连接即调用了Open方法,如果不显示调用Close或者 Dispose方法,即便出了函数作用域,数据库连接也不会被关闭。一个良好的编程习惯是用的时候打开不用的时候关闭数据库连接。所以为了防止打开了数据库而没用关闭照成数据库一直处于连接状态或者照成再次打开出现严重错误,建议大家使用using块,这样不用显示关闭数据库连接,因为using块会自动关闭数据库连接,示例如下:
sqlCommand:代表指向一个数据源的一条Transact-SQL执行语句。它有两个常用属性和数个常用方法。
CommandText:设置或获取一条Transact-SQL语句。
Connection:一个已经打开的数据库连接。
ExecuteNonQuery():针对指定的数据库连接执行绑定的SQL语句,返回受影响的行数。
ExecuteReader():针对指定的数据库连接执行绑定的SQL语句,返回一个SqlDataReader引用。
sqlDataReader:提供了一种向前读取数据库中的行的方法,通过执行sqlCommand对象的ExecuteReader()方法获得。正如这个类名字Reader一样尽量不要使用这个类进行除了读取数据以外的其他操作。他有一个常用方法.
Read():使sqlDataReader引用指向所引用对象的下一条记录,由于ExecuteReader所返回的引用指向了数据集中的第一条记录之前,所以在使用sqlDataReader引用之前 要调用Read() 方法,使得sqlDataReader引用指向有效数据,当不在有新的行时返回false否则返回true。
由于sqlDataReader继承了IDataRecord接口所以可以使用向上类型转换将返回的数据转换为IDataRecord类型,进而对数据进行处理。
sqlDataAdapter:充当着数据库与DataSet之间的桥梁的角色。sqlDataAdapter的建立必须要传入明确的sqlCommand型引用,否则将产生错误。他有两个重要的方法:Fill()和Update()
Fill():用于将数据填充到DataSet中,使得DataSet中的数据和数据库中的数据一致。
Update():用于更新数据库,使得数据库中的数据与DataSet中的数据保持一致。需要注意的是当调用Update方法时会需要一些形如insert,delete类型的SQL指令,但是遗憾的是sqlDataAdapter并不具备这项能力,所以在调用Update()之前需要生成一SqlCommandBuilder类型对象,帮助生成Update()所需 的SQL指令。
DataSet:相当于运行于内存内的一个数据库,他通过sqlDataAdapter的Fill()方法获得真实存在的数据库的一份映射。它包含着一个数据库所应有的信息,比如他可以有多张表,多个列,等等信息。DataSet经常作为一个数据源与某一具体控件联系起来,例如DataGridView。我们可以在DataGridView中对数据进行增加,删除,修改等操作。而这一切操作都将如实的返回到DataSet中。所以我们可以重新生成一sqlDataAdapter型引用,利用sqlDataAdapter对象的Update()方法将在控件中发生的变化如实的返回到数据库中。这些变化包括对数据库的更新,删除行,增加行等操作。从而实现了控件与对应数据库的同步。
实现控件数据与数据库中数据一致的代码入下:在这份代码中DataSet作为类的私有变量存在。
以上是小弟对数据库操作的一点认识,以上内容已经实现了简单的数据读取,交换,更新功能。如果大家对上述内容有异议,还希望能够积极跟我联系。帮助我提高认识,小弟先行拜谢。