第三章 ASP.NET数据库访问——ADO.NET
3.1概述 ActiveX Data Objects
说了一大堆ADO.NET的优点和与ADO相比的区别,可是具体地说,ADO.NET到底是什么?
ADO.NET整体结构图:
Data Source
V
Managed Provider(OleDB or SQLClient)
V
|-Connection
|-Command |-DataRowCollection
|-DataReader DataTable +-DataColumnCollection
|-DataAdapter à DataSet < |-ConstraintCollection
DataRelationCollection (可以看数据库访问相关笔记)
数据访问的两种方式:DataReader直接访问和DataSet+DataAdapter
ADO.NET特性:
a.可编程性(慢慢来)
b.互操作性 XML在组件间传送数据集 ADO.NET组件是什么?e 对了,数据集(离线数据表)的表示确是使用XML的。
3.2 Connection对象
-------------------------------------
using System.Data.SqlClient;//必要的
string strConn = "server = localhost; uid = sa; pwd = sa; database = testDB";
SqlConnection conn = new SqlConnection();
conn.Open();
//做事情
conn.Close();
--------------------------------------------
OleConnction 也是一样
Ole什么去查,也是一种数据库吧
3.3 Command对象
建一个command对象,要两个参数,一个是Sql字符串、一个是数据库连接对象。
--------------------------------------
string sqlCommand = "select * from testTable ";
SqlCommand comm = new SqlCommand(sqlcommand,conn);
--------------------------------------
Command的几个方法:
comm.ExecuteNonQuery;不利用DataSet的情况下改变数据库(不用显示)
comm.ExecuteReader;下一节。
comm.ExecuteScalar;返回一个单值,多用于查询聚合值,如count()、sum()等.
comm.ExecuteXmlReader;
3.4 DataReader对象
读取调用SqlCommand获得的数据。
--------------------------------------
SqlDataReader reader = comm.ExecuteReader();
while(reader.Read())
{
Console.WriteLine(reader.GetInt32(0)+","+reader.GetString(1));
}
reader.Close();
--------------------------------------
SqlDataReader的几个属性:
reader.Read();//从查询结果中读取行,读完一行,向下移一行
reader.GetInt32(0);//返回当前行中指定列的值,参数为列号,如果类型不匹配,则出现一个异常。
reader.GetValues(values);//当前的整行保存在一个数组中,object[] values
reader.Close();
3.5 DataAdapter对象+ 3.6 DataSet对象
DataSetßSqlDataAdapterà数据库
|
SqlCommand
sqlConnection
------------------------------------
using System.Data;//必要的
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = comm;
DataSet ds = new Dataset1();//这个Dataset1是已经定义好了的一个数据集,从项目中添加数据集
Adapter.Fill(ds,"testTable");//两个参数,一个是数据集,一个是要查的表。
//对Adapter的操作在VS.Net中可以通过向导自动建立。
------------------------------------
其中,SqlDataAdapter有四种命令:
Adapter.SelectCommand;
Adapter.InsertCommand;
Adapter.UpdateCommand;
Adapter.DeleteCommand;
用到数据集,可以与DataGrid绑定,用来显示数据集中的内容。
做法是,现建立ASP.NET的Web服务,在WebForm.aspx中拖进一个DataGrid的控件DataGrid1,然后在WebForm.aspx.cs的page_Load()事件中,加入以上的ADO.NET语句,最后用函数:
DataGrid1.DataSource = ds.Tables[0].DefaluteView;
DataGrid1.DataBind();
这些工作也可以通过VS.NET的可视化工具进行设置。
对数据集的增删该查都是可以直接通过语句进行的。
比如ds.Tables.[“testTable”].Rows[0][1] = “XXX”;
最后的例子中那个CommandBuilder是什么?