ADO.NET简述
Ado.net连接数据库包括两种方式,一种是不断开连接的查询,主要是采取的Command对象+DataReader对象的方式,需要打开和关闭数据库连接;另一种是断开连接的查询,主要采取的是DataAdapter对象+DataSet对象的方式,不需要打开和关闭连接----
--首先,两种方式均需要使用Connection对象,建立数据库的连接,用法如下,
数据库连接字符串:string connString=“server=.;database=TestDB;uid=sa;pwd=sa”; 或者,在web.config中配置, <connectionStrings><add name="conn" connectionString="server=.;database=TestDB;uid=sa;pwd=sa" /> </connectionStrings> 数据库连接字符串:string connectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 创建connection对象:SqlConnection connection=new SqlConnection(connString);//SqlConnection在System.Data.SqlClient命名空间下 打开连接:connection.open(); 关闭连接:connection.close();
--接下来,对于连接式的查询,使用Command对象,执行SQL操作,用法如下,
ExecuteNoQuery执行不返回值的操作,如增删改操作: string sql="delete from stu where stuid=3"; SqlCommand command=new SqlCommand(sql,connection); command.ExecuteNoQuery(); ExecuteScalar执行返回单个值得操作,如统计操作: string sql="select count(*) from stu "; SqlCommand command=new SqlCommand(sql,connection); int count=Convert.ToInt32(command.ExecuteScalar());//ExecuteScalar返回值object类型,需要类型转换 ExecuteReader执行查询操作,返回结果给Datareader:string sql="select * from stu "; SqlCommand command=new SqlCommand(sql,connection); SqlDataReader da=command.ExecuteReader();
-- 然后,使用DataReader对象读取查询到的记录,用法如下,
Read方法逐行返回记录:SqlDataReader da=command.ExecuteReader();//SqlDataReader在System.Data.SqlClient命名空间下 while(da.Read()){ Console.WriteLine((string)da['''StuName']); //返回“”StuName"列数据 } da.Close(); //关闭DataReader对象
--接下来,是断开式的查询,断开式的查询主要是通过DataAdapter这个填充器填充内存中的Dataset数据集对象,DataSet数据集对象是由一堆内存中的Datatable表组成的,每个表对应着从数据库中取出来的数据表,适合大批量的数据一次查询进内存的情况,用法如下:
DataSet ds = new DataSet();//DataSet在System.Data命名空间下 SqlDataAdapter da = new SqlDataAdapter(command);//SqlDataAdapter在System.Data.SqlClient命名空间下 da.Fill(ds); return ds.Tables[0];//返回数据集中的第一张表
补充,SqlParameter,通过设置Parameter参数实现参数化查询,用来设置存储过程参数和来防止sql注入攻击等,用法如下:
String sql=“select count(*) from stu where id=@id”; SqlParameter[] parameters={ new SqlParameter{"@id",SqlDbType.int,4} }//设置参数类型 } parameters[0].Value=id//设置参数值