您的位置:首页 > 其它

ADO.Net基础复习(一)

2011-11-15 22:23 239 查看
先前的一个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,以升序或降序来显示记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: