一、
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;
}