ADO.NET的结构与作用
ADO.NET__
|__DataSet--数据集 内存中的数据库 表的集合 Tables[表名]或Tables[下标]访问
|__NET.Framework提供的程序__
|__Connection--数据库的开关 连接字符串ConnectionString = "server=数据库所在的服务器的名称或IP;database=数据库的名称;uid=数据库用户的名称;pwd=密码"
| 断开式(只需要Connection的实例化)和非断开式连接(Open和Close方法注意用到错误处理)
|__Command--数据库的执行命令_____实例化至少需要2个参数 Command本身基于的连接Connection和SQL语句
| |__单向数据库操作 ExecuteNonQuery()方法 执行SQL语句(CommandType.CommandText) 和 存储过程(CommandType.CommandProdruce)
| |__用做检验或测试 ExecuteScalar()方法 返回第1行第1列
| |__产生DataReader对象 ExecuteReader()方法
|__DataReader__连接方式 非断开式连接
| |__对信息的操作 只读只进 通过Command对象的ExecuteReader()方法获取
| |__遍历所有的行(DataReader.Read()方法)和列(通过循环(for(int i=0;i<DataReader.FieldCount;i++)))(DataReader.FieldCount属性可以获取列的总数)
| |__通过DataReader.getValue[列的编号]获取指定表中单元格的信息
|__DataAdapter__连接方式 断开式连接
|__对信息的操作 任何操作
|__可直接绑定数据源 配合DataGird控件使用 DataGird.DataSource=DataSet/DataSet.Tables[0].defaultView
|__Fill()方法 将信息填充到数据集中 DataAdapter.Fill(DataSet) 直接填充
|__Update()方法 通过对数据集的修改去修改数据库 DataAdapter.Update(DataSet) 要执行相应的SQL语句
ADO.NET 操作数据库的基本方式
1.Connection与Command组合 数据库单向操作
实例化Connection
拼接SQL语句 单向操作(insert update delete)
通过连接和SQL语句实例化Command
Connection.Open()
Command.ExecuteNonQuery()
Connection.Close()
eg.
2.Connection,DataReader与Command组合 获取数据库中指定行列的信息
实例化Connection
拼接SQL语句 查询操作(select)
通过连接和SQL语句实例化Command
Connection.Open()
DataReader=Command.ExecuteReader()
DataReader.Read() 遍历所有的行
for(int i=0;i<DataReader.FieldCount;i++) 遍历所有的列
通过DataReader.getValue[列的编号]获取指定表中单元格的信息
Connection.Close()
eg.
3.Connection,DataAdapter与DataSet组合 实现数据库的双向操作
3.1 Fill()
实例化Connection
拼接SQL语句 查询操作(select)
通过连接和SQL语句实例化DataAdapter
实例化DataSet
DataAdapter.Fill(DataSet)
DataGird.DataSource=DataSet/DataSet.Tables[0].defaultView
eg.
3.2 Update()
实例化Connection
拼接SQL语句(带参数的 参数的前缀@)
实例化相应的DataAdapter中的Command属性 InsertCommand,UpdateCommand和DeleteCommand
注册参数 使用System.Data.SqlClient.SqlParameter
-1.参数的名称(SQL语句中的名称)和类型(数据库里的类型)
-2.参数对应的列名 SourceColumn属性
-3.参数的取值 SourceVersion属性 注意是修改后的(Current)值还是修改前的(Original)值
(在删除操作时注意要用代码先将DataSet中的数据改变 mySet.Tables[0].Rows[this.dbgInfo.CurrentRowIndex].Delete();)
调用Adapter的update方法