ADO.NET
为什么要学ADO.NET
之前我们所学只能在查询分析器里查看数据,操作数据,我们不能让普通用户去学sql,所以我们搭建一个界面(Web Winform)让用户方便的操作数据库中的数据
什么是ADO.NET
ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类用类操作文件一样, System.Data.这组类是用来操作数据库(不光是MSSql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSql Server一致
数据提供程序
connection //连接对象
command
executeNonQuery //执行增删改
executeScalar //执行查询返回首行首列
insert into class() values();select @@identity
executeReader //执行查询返回只读只进的结果集datareader
datareader
hasRow //是否有行
fieldCount //字段的个数
read()
dr["列名"] //返回object
dr.GetString(序号)
close()
dataadapter
数据集
dataset
ADO.NET功能结构
第一个对象Connection
读取Sql Server数据库使用
创建SqlConnection对象
获取连接字符串 指定要连哪台服务器上的、哪个实例的哪个数据库、用什么用户名密码等。
第二个对象Command
操作Sql Server数据库使用SqlCommand对象
SqlCommand表示向服务器提交的一个命令(SQL语句等) , CommandText属性为要执行的SQL语句,ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等)
常用的三个方法
ExecuteNonQuery() 执行对数据库的增删改,返回受影响的行数
ExecuteScalar() 执行查询,返回首行首列
ExecuteReader() 执行查询,返回DataReader对象
ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型。
得到自动增长字段的主键值,在values关键词前加上output inserted.Id,其中Id为主键字段名。执行结果就试插入的主键值,用ExecuteScalar执行最方便。
cmd.CommandText =“insert into class(cName,cDescription) output inserted.Id values(‘高三一班’,‘描述’)”;
int i = Convert.ToInt32(cmd.ExecuteScalar());
SqlDataReader reader = cmd.ExecuteReader();
HasRow属性返回是否有行
while (reader.Read())
{ Console.WriteLine(reader.GetString(1));
}
reader的GetString、GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号
更简单的方法reader[‘uUserName’]
DataReader 必须独享一个Connection
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。foreach (DataRow row in dataset.Tables[0].Rows) row["Name"]。