ado.net组件中有哪些常用的对象?
Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader
DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
DataSet对象: 服务器内存中的数据库
DataView对象: 用于显示DataSet中的数据
ADO.net中常用的对象有哪些?分别描述一下.
Command对象
1.Command对象概述
Command对象可以使用数据库命令直接与数据源进行通信。它的属性如下:
Name:Command对象的程序化名称。在代码中使用此名称来引用Command对象。
Connection:对Connection对象的引用,Command对象将使用该对象与数据库通信。
CommandType:Text | StoreProduce | TableDirect。
CommandText:SQL语句 | StoreProduce
Parameters:命令对象包含的参数。
可以通过一下三种方式来创建Command对象:
方式一
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = cn.CreateCommand();
cmd.CommandText = strSQL;
方式二
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand();
cmd.CommandText = strSQl;
cmd.Connection = cn;方式三
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID,CompanyName FROM Customers";
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
OleDbCommand cmd;
cmd = new OleDbCommand(strSQL, cn);
2.Command对象参数
常用属性如下:
ParameterName:参数名称,如"@CatID"。
DbType,SqlType,OleDbType:参数的数据类型。
Direction:ParameterDirection枚举值。
ParameterDirection.Input(默认值)| ParameterDirection.InputOutput |
ParameterDirection.Output | ParameterDirection.ReturnValue
3.执行
四种执行方式:
ExecuteNonQuery() 返回受命令影响的行数。
ExecuteScalar() 返回第一行第一列(使用与集函数)。如Count(*),Sum,Avg等聚合函数。
ExecuteReader() 返回一个DataReader对象。如果SQL不是查询Select,则返回一个没有任何数据的System.Data.SqlClient.SqlDataReader类型的集合(EOF)。
ExecuteXmlReader()返回一个XmlReader对象。
4.参数化查询
使用示例
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;"
OleDbConnection cn = new OleDbConnection(strConn);
cn.Open();
strSQl = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Order WHERE CustomerID = ?";
OleDbCommand cmd = new OleDbCommand(strSQl,cn)
cmd.Parameters.Add("@CustomerID",OleDbType.Wchar,5);
cmd.Parameters[0].Value = "ALFKI";
OleDbDataReader rdr = cmd.ExecuteReader();
----------------------------------------------------------------------------------------------------------------------------
Connection对象可用于连接到数据库管理数据库的事务。
1.Connection对象的创建
4种数据库连接方式:
OLEDB:System.Data.Oledb.OledbConnection
SQL:System.Data.SqlCilent.SqlConnection
ODBC:System.Data.Odbc.OdbcConnection
Oracle:System.Data.OracleClient.OracleConnection
我们来看一个OleDbConnection创建的实例,一共有2种方法。
第一种:创建一个没有初始化的OleDbConnection对象,然后用ConnectionString来初始化。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn;
cn = new OleDbConnection();
cn.ConnectionString = strConn;
第二种:使用构造函数来初始化OleDbConnection对象。
创建Connection对象
String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn;
cn = new OleDbConnection(strConn);
2.连接字符串
连接字符串的几个常用参数:
Provider:这个属性用于设置或返回连接提供程序的名称,仅用于OleDbConnection对象。
Connection Timeout或Connect Timeout:在中止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位)。默认是15秒。
Initail Catalog:数据库的名称
Data Source:连接打开时使用的SQL Server名称,或者是Microsoft Access数据库的文件名。
Password:SQL Server帐户的登录密码。
User ID:SQL Server登录帐户。
Integrated Security或Trusted Connection:此参数决定是否是安全连接。可能的值有True、False和SSPI(SSPI是True的同义词)。
Persist Security Info:当设置为False时,如果连接是打开的或曾经处于打开状态,那么安全敏感信息(如密码)不会作为连接的一部分返回。设置属性值为True可能有安全风险。False是默认值。
3.打开和关闭连接
Open 方法:打开连接
Close 方法:关闭连接
注:如果使用了连接池,关闭连接对象不会真正地关闭对数据源地连接。
如果只用DataAdapter,就不必显式地打开和关闭连接。当调用这些对象的方法时(Fill方法、Update方法)会自动检查连接是否打开。
DataReader对象
1.DataReader对象概述
DataReader对象只能对查询获得的数据集进行自上而下的访问,但效率很高。如果仅仅是访问数据的话,可以使用DataReader。但DataReader要求一直连接,所以将结果的一小部分先放在内存中,读完后再从数据库中读取一部分,相当于一个缓存机制。这对于查询结果百万级的情况来说,带来的好处是显而易见的。
DataReader对象有如下几个特点:
快速访问数据。由于DataReader对象是只进和只读的,所以开销相对较小,速度比DataSet快。
只进和只读。不能处理数据,只能显示数据。
自己管理连接。DataAdapter对象可以自动地打开和关闭连接,DataReader对象必须显式地打开和关闭连接。
使用较少地服务器资源。
2.创建DataReader对象
具体步骤
(1)创建和打开数据库连接。
(2)创建一个Command对象
(3)从Command对象中创建DataReader。
(4)执行ExecuteReader对象。
(5)使用DataReader对象
(6)关闭DataReader对象
(7)关闭Connection对象。
DataReader对象创建示例
DataReader对象使用示例
//打开Connection并创建Command
SqlConnection conn = new SqlConnection("data source=localhost;integrated security=true;initial catalog=pubs;");
conn.Open();
SqlCommand cmdAuthors = new SqlCommand("select * from Authors", conn);
//创建DataReader对象并读取数据
SqlDataReader dr;
dr = cmdAuthors.ExecuteReader();
while(dr.Read())
{
ListBox.Items.Add(dr["au_lname"]+","+dr["au_fname"]);
}
//关闭DataReader和Connection
dr.Close();
conn.Close();
当使用DataReader对象进行连接时,需要使用Try...Catch...Finally语句,这样可以确保若在某方面失败,连接将会关闭。否则,连接会无限期保持打开状态。
捕捉错误
try
{
conn.Open();
dr = cmdAuthors.ExecuteReader();
//使用DataReader中返回的数据
}
catch
{
//错误处理
}
finally
{
dr.Close();
conn.Close();
}
|