ADO.Net基础复习(一)

先前的一个SQL基础复习,有点粗枝大叶,不够具体、详细! 复习整理的,有很多属性和方法也没提到,只是说了一下常用的、基础的属性和方法!

一切都归因于老师的教导有方!

 

注意命名空间的引入:

using System.Data;

using System.Data. OleDb;       //用于OLEDB提供器支持的数据库

using System.Data. Odbc;        //用于ODBC数据提供器支持的数据库的数据

using System.Data.SqlClient;   //用于sql server数据库

 

五大对象:

Connection对象:建立与数据源的连接

Command对象:检索,插入,删除,修改数据

DataReader对象:只读,只向前的方式检索数据

DataAdapter对象:数据库和数据集交互的桥梁

DataSet对象:看成是驻留在内存中的一个小型数据库

 

四种典型的连接类

OdbcConnection

OleDbConnection

SqlConnection

 

下面是以对SQL Server数据库的操作

一、Connection对象:连接数据源   

1.创建Connection对象:   

string strCon="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb";   

SqlConnection myConnection=new SqlConnection(strCon);      

2.属性:   

(1).ConnectionString:指定连接数据库所需的值字符串格式的描述   

 Data Source=服务名; Initial Catalog=数据库名; User ID=用户名;        Password=密码;  //Integrated Security=True;  

如: //SQL Server验证(注意转义字符:\),混合验证        

ConnectionString="Data Source=user8\\SQLEXPRESS;Initial Catalog=studentdb; User ID=sa;Passward=pws;"   

  //windows验证

ConnectionString="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb;     Integrated Security=true;" 

(2).State:只读属性,表示连接状态

(3).Pooling:当为 true 时,请求新的连接时从池中取出,默认是true   

(4).Connect Timeout( Connection Timeout):等待服务器响应的时间(单位:秒). 默认值:15。   

(5).Provider:指打开数据库的驱动程序       

3.方法:   

(1).Open()  //根据连接串,打开连接   

(2).Close() //关闭连接,释放资源

4.事件:   

(1).StateChange:此事件发生在连接的状态发生更改时   

(2).InforMessage:此事件发生在从数据源返回信息性消息或警告时

 

二、Command对象:执行相关命令    

1.创建Command对象:    

string strSql="";//SQL命令    

(1).SqlCommand com=new SqlCommand(strSql,connection);    

(2).SqlCommand com=connection.CreateCommand(strSql);    

2.属性    

(1).Connection:连接对象    

(2).CommandText:要执行的SQL命令(SQL语句或存储过程)    

(3).CommandType:默认值是Text,执行sql语句;并可设置为StoredProcedure,执行存储过程;TableDirect,指示所包含的是要访问的一个表的名称,从此表中将取出所有的列和行    

(4).Parameters:Parameters集合    

(5).Transaction:执行命令所在的事务       

3.方法    

(1).ExecuteNonQuery():返回执行命令受影响的行数,用于增删改操作

(2).ExecuteScalar():返回执行sql语句的第一行第一列的值,用于查询单列值      

(3).ExecuteReader ():返回一个DataReader对象[只向前、只读的结果集],用于查询多个数据    

4.对于Parameters集合:    

(1).属性:    

<1>.Count属性:获取集合中参数的数目;    

<2>.ParameterName:设置为SQL命令或存储过程中的参数名,如 “@EmployeeID”    

<3>.SqlDbType:将该属性设置为参数的数据类型。    

设置SqlParameter对象的数据类型的方法有以下两种。    

在DbType枚举中选择一个值赋给DbType属性   

在SqlDbType枚举中选择一个值赋给SqlDbType属性    

<4>.Size:设置该属性以指示参数大小,例如字符串参数中字符的个数。     无需为已知且具有固定大小的数据类型(例如DbType.Int32)指定大小   

<5>.Direction:设置该属性以指示该参数是只输入参数、只输出参数、双向参数 还是存储过程的返回值。

该属性可设置为ParameterDirection枚举值之一:     ParameterDirection.Input、ParameterDirection.InputOutput、    ParameterDirection.Output或ParameterDirection.ReturnValue。默认方向为    ParameterDirection.Input    

<6>.Value:对于只输入参数或双向参数而言,在运行该命令之前需要设置Value属性。

对于只输出参数、双向参数和存储过程的返回值而言,在运行该命令之后可以检索Value属性    

(2).方法:    

<1>.Add():将参数添加到集合中;    

<2>.Clear():从集合中移除所有参数;    

<3>.Insert():将参数插入集合中的指定索引位置;    

<4>.Remove():从集合中移除所指定的参数;    

(3).创建参数对象:    

strSQL="select  *  from CustomersTb where customerid=@customerid";       

<1>.第一种方式:     cmd.Parameters.add(new SqlParameter("@customerid","ALFKI"));    

<2>. 第二种方式 :    

SqlParameter myPara=new SqlParameter();    

myPara .ParameterName="@customerid";    

myPara.value="ALFKI";   

cmd.Parameters.Add(myPara);    

5.对于ExecuteReader ()方法返回一个DataReader对象    

(1).DataReader的创建:sqlDataReader rdr=cmd.ExecuteReader();    

(2).属性:    

<1>.FieldCount:字段数    

<2>.HasRows:是否有数据未读    

<3>.IsClosed:判断DataReader对象是否关闭    

(3).方法:    

<1>.GetValue():获取指定字段的值    

<2>.GetOrdinal():获取字段的序号    

<3>.Read():判断并读取下一条记录    

<4>.Close():关闭对象    

还有方法:GetInt32()\GetName()\NextResult()\IsDBNull()

 

三、Adapter数据适配器对象:数据库和数据集的桥梁(断开环境)    

DataAdapter是和数据集(DataSet)一起使用的对象,数据库与数据集之间起桥梁作用;专门为处理脱机数据而设计的。        

1.创建DataAdapter对象:    

string  strConn="Data Source=.;Initial Catalog=northwind;User ID=MyUserid;Password=myPassword;"    

string strSql="select * from studentsTb";      

(1).用查询串和连接字符串    

SqlDataAdapter da=new SqlDataAdapter (strSql,strConn);    

该方式会为每个SqlDataAdapter 创建一个新的SqlConnection对象,应适当选择。

用查询串和连接对象 SqlConnection cn=new sqlConnection(strConn);                  

(2).SqlDataAdapter da=new SqlDataAdapter (strSql,cn);     

比较常用的方式    

(3).使用SqlCommand对象    

SqlCommand cmd=new SqlCommand(strSql,CN);             

SqlDataAdapter da=new SqlDataAdapter (cmd);    

已存在一个SqlCommand对象时使用.           

2.属性:    

(1).SelectCommand:在数据源中检索数据的数据命令    

(2).InsertCommand:在数据源中插入数据的数据命令    

(3).UpdateCommand:在数据源中更新数据的数据命令    

(4).DeleteCommand:在数据源中删除数据的数据命令    

(5).TableMappings:DataTableMapping对象的集合,决定DataSet中的行与数据源之间的关系    

(6).UpdateBatchSize:决定批进程支持,指出在批处理中可执行的命令的数量

3.方法:    

(1).Fill()    

<1>. Fill(DataSet) :DataSet结果集    

<2>. Fill(DataTable): DataTable对象    

<3>. Fill(Int32,Int32,params DataTable[]):开始记录索引 ,要填充的数据表的行数, DataTable对象   

<4>.Fill(DataSet, Int32,Int32,String) :DataSet结果集,对象 开始记录的索引 ,要填充的数据集的行数 ,表名    

(2).Update()

4.对于TableMappings属性的应用    

(1).先创建SqlDataAdapter对象    

SqlDataAdapter adapter = CreateDataAdapter(conn, age);   

DataSet ds = new DataSet();     

(2).Mappings的用法   

DataTableMapping mapping = adapter.TableMappings.Add("Table", "学生表");   

mapping.ColumnMappings.Add("SNO", "学生编号");  

mapping.ColumnMappings.Add("SName", "学生姓名");  

mapping.ColumnMappings.Add("SDept", "所在院系");  

mapping.ColumnMappings.Add("SClass", "所在班级");

mapping.ColumnMappings.Add("SSex", "性别");   

mapping.ColumnMappings.Add("SAge", "年龄");       

(3).数据填充    

adapter.Fill(ds);      

(4).dataGridView绑定显示   

dataGridView1.DataSource = ds.Tables["学生表"];//使用设置好的映射表名字  

dataGridView1.Refresh();      

5.Update()方法的应用    

(1).数据填充    

string strSql="SELECT * FROM STUDENT";     

adapter.SelectCommand = new SqlCommand(strSql, conn);                   

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

adapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];      

dataGridView1.Refresh();    

更新时的代码:

adapter.Update(ds);              

MessageBox.Show("更新成功");       

6.DataAdapter的事件    

(1).Disposed:当调用Dispose释放组件的时候调用。    

(2). FillError:在填充操作过程中出现错误时返回。    

(3). RowUpdating:在对数据源执行命令前的Update过程中发生,试图进行更新,因此激发该事件。    

(4). RowUpdated:在对数据源执行命令后的Update过程中发生,试图进行更新,因此激发该事件。

   

四、DataSet:数据集

1.DataSet 层次结构中的类:DataTable\DataColumn\DataRow\DataTableCollection\DataCloumnCollection\DataRowCollection\

2.对于DataTable对象允许访问数据集中被访问的Rows集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

对于DataTable对象允许访问数据集中被访问的Columns集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

3.创建DataTable   

//创建一个DataTable的一个实例。

DataTable dt = new DataTable("学生表");

//声明列对象            

DataColumn column;               

column = new DataColumn();               

//设置列的数据类型               

column.DataType = System.Type.GetType("System.Int32");               

column.ColumnName = "学生编号";               

column.ReadOnly = true;               

column.Unique = true;               

//向DataTable添加该列               

dt.Columns.Add(column);

//建立一个新行   

row = dt.NewRow();              

//为新建立的行添加数据               

row["学生编号"] = Convert.ToInt32(txtID.Text.ToString());               

row["学生姓名"] = txtName.Text;

//为该表添加指定的行              

dt.Rows.Add(row);

 

//绑定数据为DataGridView              

dataGridView1.DataSource = dt;              

dataGridView1.Refresh();

4.DataTable的Select方法 三个参数:

(1). String:筛选条件

(2).String:排序表达式

(3).RowStateValue:一个值,指示要以什么版本或状态进行筛选。这是一个枚举值。如 :DataViewRowState.CurrentRows。

示例代码:  

DataTable dataTable = new DataTable("学生表临时");       

dataTable = dt.Clone();

string expression = "学生编号 = " + Convert.ToInt32(txtID.Text.ToString());              

//按照条件筛选数据              

DataRow[] foundRows = dt.Select(expression);

//遍历查询出来的结果并将其绑定到DataGridView2上。            

foreach(DataRow dr in foundRows)            

{                  

  DataRow dataRow = dataTable.NewRow();                  

  dataRow[0] = dr[0];                  

 dataRow[1] = dr[1];

 dataTable.Rows.Add(dataRow);          

}

 //绑定数据为DataGridView              

dataGridView2.DataSource = dataTable;              

dataGridView2.Refresh();

5.DataTable对象的SELECT方法的功能非常强大,但它效率低,windows web窗体都不支持绑定到select方法的返回值,dataView类能弥补select的局限性. DataView属性:

(1).RowFilter:此属性用来指定用来过滤记录的字符串格式的表达式/条件。满足条件的记录将只被包括在视图中。

(2).RowStateFilter:此属性指定此 DataView 返回的数据的版本。

(3).Sort:此属性用来指定将按其排序记录的表达式。表达式包括列名称和排序限定符,其为 ASC 或 DESC,以升序或降序来显示记录。   

 

posted @ 2011-11-15 22:23  SanMaoSpace  阅读(336)  评论(0编辑  收藏  举报