ADO.NET总结

一、

1、ADO.Net的数据库根据相关类根据性质分为连接对象和断开对象。

连接对象:

(1)Connection:建立与特定数据源的连接,并且打开指定数据库。

(2)Command:用来访问及更新数据源内容,并且执行数据库的存储过程。

(3DataReader:包含对象Command返回的数据内容,是一种单向导航,只读的高性能数据流。

(4)DataAdapter:在数据源与断开对象DataSet之间起到桥梁的作用。

2、

(1)SqlConnnection连接字符串属性:

ConnectionString:这个属性用来设定SqlConnection对象所需的连接字符串;

SqlConnection mysqlconnection=new SqlConnection();

SqlConn.ConnectionString=ConnectionString;

(2)Open(); 打开一条可用的数据源链接;

(3)Close();关闭与数据源之间的链接;与Close的等效的方法Dispose();方法继承自Component类引用此方法系统不会等待GC收回对象,便会直接将对象所占用的系统资源释放,

(4)ConnectionState表示当前的连接状态;

3、Command对象是非常重要的数据访问接口对象

(1)Command对像有两种重要的功能:传递Sql语句或是要求数据库执行数据库的存储过程。

CommandText属性代表要传送到后端数据库的Sql语句或是存储过程的名称。

ExecuteNonQuery()此方法返回Sql语句执行时返回受影响的行数。、

ExecuteReader();此方法回传一个DataRader对象,包含了Sql 语句从数据库中所取得的数据内容.

DataReader mydataread=ExecuteReader();

ExecuteScalar();此方法返回可以返回单一列的返回值(返回第一行的第一列);注意对象的返回值为Object类;

(2)建立Command对象有以下几种方法:、

<1>SqlCommand mycommand=new SqlCommand();

mycommand.Connnection=mysqlconnnection;

mycommand.CommandText=mysql;

<2>SqlCommand mycommand=new SqlCommand(mysqlconnnection,mysql);

<3>SqlCommand mycommand=mysql.CreateCommand();

(3)Command与Parameter对象

添加参数方法:

(1)SqlParameters sqlPata=new SqlParameters();

sqlPara.SqlDbType=SqlDbType.NChar;

sqlPara.Size=10;

SqlPara.ParameterName="@bookid";

sqlPara.Value=bookID;

SqlCmd.Paraneters.Add(sqlPara);

sqlConn.Open();

(2)

sqlCmd.Parameters.Add("@bookTitle",SqlDbType.NChar,50).Value=strBookTitle;

sqlCmd.Parameters.Add("@bookDate",SqlDbType.DateTime).Value=strBookDate;

4.DataSet数据集

使用DataSet之前,必须建立DataAdapter对象,并且以其为桥梁取得底层数据源的内容.

(1)建立DataAdapter对象

《1》SqlDataAdapter myadapter=new SqlDataAdapter();

myadapter.SelectCommand=myCmd;

《2》SqlDataAdapter myadapter=new SqlDataAdapter(myCmd);

《3》SqlDataAdapter myadapter=new SqlDataAdapter(mysql,myconnnection);

如果是用Adapter完成简单功能,不需要连接对象,同时也不会直接与Command对象互动,可以将字符串、Sql语句,输入SqlDataAdapter构造参数中,同样得到一个SqlDataAdapter对象. 

(2)DataSet剖析:

《1》

DataTable myDt=myDataSet.Tables[index];   index为索引;

《2》

DatSet ds=new DataSet();

DataTableCollection  myDTC=myDS.Tables;  //返回数据集表的集合

DataTable myDT=myDTC[0];

《3》

DataColumnCollection  myDCC=myDT.Columns;

DataColumn mydc=mydc[0];获得第一列

DataRowCollection myDRC=myDT.Rows;  //返回表行的集合

《4》数据导航、检索

1)

public DataRow Find(Object key);

public  DataRow Find(Object[] keys);

eg:DataRowCollection drCollection=ds.Tables[0].Rows;

 DataRow dr=drCollection.Find(FindTextBox.Text);

2)DataRow[] drs=dt.Select(SelectTextBox.Text);

1DataRow[] drArr = dt.Select("C1='abc'");//查询
还可以这样操作:
1DataRow[] drArr = dt.Select("C1 LIKE 'abc%'");//模糊查询
2DataRow[] drArr = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC");//另一种模糊查询的方法
3DataRow[] drArr = dt.Select("C1='abc'", "C2 DESC");//排序
问题又来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:

查询数据比较适合用dt.Select()方法;   注:条件相当于where后面的语句;

(3)DataView

(1)属性:public DataView Defaultview(get;)

 DataView dv=ds.Tables[0].Defaultview; 只读属性;

(2)public virtual  string RowFilter(get;set;)   这个属性可以读写

dv.RowFilter="bookAuthor='路高旭' ";

(3)DataView 排序属性

dv.Sort=" bookAuthor ASC";

(4)关系型DataTable

DataRelation是一个ADO.Net类,位于System.Data命名空间,它定义了数据表关系所需的信息,用来表示两个DataTable对象之间的父子关系;

关联条件约束:

public DataRelation(

string relationName,

DataColumn parentColumn;

DataColumn childcolumn;

bool createConstraints;

)

DataRelation dRelation=new DataRelation("bookAuthor",columnParent,columnChild);

ds.Relation.Add(dRelation);
(5)ForeignKeyConstraint

eg:

if(!IsPostBack)

{

    String connection="";

....

DataColumn  columnParent=ds.Tables["Authores"].Columns["authorID"];

DataColumn columnchild=ds.Tables["Books"].Columns["bookAuthor"];

ForeignKeyConstraint fkeyConstraint=new ForeignKeyConstraint("bookAuthor",columnParent,columChild);

ds.Tables["books"].Constrainsts.Add(fkeyConstraint);

ds.EnforeConstrrainsts=false;

}

原文地址:https://www.cnblogs.com/lykbk/p/ADONET.html