ASP.NET数据库高级编程笔记(3)

来源:互联网 发布:淘宝的会员名可以改吗 编辑:程序博客网 时间:2024/05/01 07:20

第三章 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.NETWeb服务,在WebForm.aspx中拖进一个DataGrid的控件DataGrid1,然后在WebForm.aspx.cspage_Load()事件中,加入以上的ADO.NET语句,最后用函数:

DataGrid1.DataSource = ds.Tables[0].DefaluteView;

DataGrid1.DataBind();

    这些工作也可以通过VS.NET的可视化工具进行设置。

    对数据集的增删该查都是可以直接通过语句进行的。

    比如ds.Tables.[“testTable”].Rows[0][1] = XXX”

 

最后的例子中那个CommandBuilder是什么?