一,基础知识
在使用ADO.NET访问数据的时候,有两种方法:
1,使用Connection+Command+DataReader方法
使用ADO.NET的Datareader对象能从数据库中检索数据。检索出来的数据形成一个只读只进的数据流,存储在客户端的网络缓冲区内。Datareader对象的read方法可以前进到一下条记录。在默认情况下,每执行一次read方法只会在内存中存储一条记录系统的开销非常少。创建datareader之前必须先创建sqlcommand对象,然后调用该对象的executereader方法来构造sqldatareader对象,而不是直接使用构造函数。
示例:ADO.NET——Command(执行SQL) & DataReader(读取数据库)
2,使用Connection+DataAdapter+DataSet
使用这种方法,主要是用DataAdapter充当DataSet和数据源之间用于检索和保存数据的桥梁,然后将从数据库中检索到的数据存放到DataSet或者DataTable中,也就是本机的内存中,然后对数据进行检索。这样,相当于数据库中的信息在本机copy之后产生了一个副本。我们使用的是这个副本,最后,才将操作的结果返回数据库。这样节约了网络资源,但是,在有不同用户的并发操作时,就行PV操作那样,由于存在与时间有关的错误,容易造成用户数据不准确。
二,DataAdapter+DataSet取代Comman+DataReader访问数据库的示例
static void Main(string[] args) { //创建连接 string strConn = "database=Login;server=localhost;UID=sa;PWD=123456"; //连接字符串 using (SqlConnection conn = new SqlConnection(strConn)) //建立连接,并且当连接使用完后自动关闭 { conn.Open(); //打开连接 string strSQL = "select * from Users where ID='1'"; //查询语句 SqlDataAdapter adapter = new SqlDataAdapter(strSQL, conn); //执行查询 DataSet dataset = new DataSet(); //用来存放查询的数据 adapter.Fill(dataset); //将查询的结果转入dataset //显示查询结果 DataTable table = dataset.Tables[0]; //第一张表 int i=0; //第一行row=0 DataRow row = table.Rows[i]; //得到每一行 string name = Convert.ToString(row["UserName"]); //将得到的object数据转换成字符串 Console.WriteLine("ID是:1;UserName是:{0}",name); //输出ID=‘1’时所对应的UserName } }
与只读的DataReader相比,可以用DataAdapter+DataSet对数据库进行update.