------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
一、ADO.NET简介
1.ADO.NET模型分成.NET Data Provider(数据提供程序)和DataSet数据集(数据处理的核心)两大主要部分。
2..NET Data Provider是指访问数据源的一组类库,主要是为例统一对于各类型数据源的访问方式而设计的一套高效能的类库。
3.不同的数据库使用不同的.NET Data Provider
SQL.NET Data Provider:支持Microsoft SQL Server 7.0及以上版本,Microsoft SQL Server首选使用此程序来访问。
OLEDB.NET Data Provider:支持dBase、FoxPro、Excel、Access、Oracle以及SQL Server等各类型数据源。
DOBC.NET Data Provider:支持dBase、FoxPro、Excel、Access、Oracle以及SQL Server等各类型数据源。
ORACLE.NET Data Provider:支持通过ORACLE接口来访问ORACLE数据源。
4..NET Data Provider包含的4个对象
对象名称 | 功能说明 |
Connection | 与指定的数据进行连接 |
Command | 用来运行select、insert、update、delete的SQL命令或者存储过程等 |
DataAdaptet | 连接DataSet对象和数据源间的桥梁 |
DataReader | 通过Command对象运行SQL查询命令取得数据流,以便进行高速、只读的数据浏览 |
5.DataSet(数据集)就像是内存中的数据库管理系统,数据都暂存在内存并处理各种从数据源中所取回的数据,以达到离线存储的目的。
二、ADO.NET数据库的访问流程
1.建立Connection对象,创建一个数据库连接。
例:
using System.Data.SqlClient;
string connStr;
SqlConnection conn = new SqlConnection();
connStr = "数据库连接字符串";
conn.ConnectionString = connStr;
//或者直接使用SqlConnection conn = new SqlConnection(connStr);进行创建Connection对象
conn.Open();
//do something
conn.Close();
实际开发常用方法:
//类需要继承IDisposable接口
string connStr = "数据库连接字符串";
try
{
using(SqlConnection conn = new SqlConnection(connStr))
{
con.Open();
//do something
com.Close();
}
}
catch(SqlException e)
{
//Log the exception
}
2.使用Command对象对数据库发送增、删、改、查等命令。
创建SqlCommand对象,然后把SQL子句作为一个参数传递给Command类的构造函数,放在上面例子的do something中
string sqlstr = "select * from tbStudent";
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sqlstr;
cmd.Connection = conn;
//可以直接使用SqlCommand cmd = new SqlCommand(sqlstr,conn);进行创建Command对象
//根据不同sql语句执行不同Command的方法
(1)ExecuteNonQuery()方法,这个方法一般用于UPDATE、INSERT或者DELETE语句,唯一的返回值是受影响的行数。
例:
如上面改为sqlstr="update tbStudent set score=score+10";
cmd.ExecuteNonQuery();//返回值为int类型
(2)ExecuteScalar()方法,用来执行查询,返回查询的结果集中的第一行第一列,忽略其他行、列
例:
如上面改为sqlstr="select avg(score) form tbStudent";
double avgScore = (double)cmd.ExecuteScalar();//返回值为object类型,强制转换成你要的类型
(3)ExecuteReader()方法,用来执行查询,并返回一个类型化的DataReader对象,返回的对象可以用于遍历返回的记录。
string sqlstr = "select no , name from tbStudent";
SqlDataReader reader = cmd.ExecuteReader();//返回的结果是只读的
while(reader.Read())//如果没数据了Read()方法将返回false
{
string no = reader[0];//也可这样取值reader[no];
string name = reader[1];//也可这样取值reader[name];
}
(4)对于带参数的SQL语句
string sqlstr = "select * from tbStudent where Sno = @no";
string studentNo = "001";
cmd.Parameters.AddWithValue("@no", studentNo);//有多个参数则写多个此语句,然后再执行