Connection对象

      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来初始化。


String strConn;
strConn = "Provider=SQLOLEDB;Data Source={local)""NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";
OleDbConnection cn;
cn = new OleDbConnection();
cn.ConnectionString = strConn;


第二种:使用构造函数来初始化OleDbConnection对象。


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:此参数决定是否是安全连接。可能的值有TrueFalseSSPISSPITrue的同义词)。
Persist Security Info
:当设置为False时,如果连接是打开的或曾经处于打开状态,那么安全敏感信息(如密码)不会作为连接的一部分返回。设置属性值为True可能有安全风险。False是默认值。

    3.打开和关闭连接
Open 方法:打开连接  
Close方法:关闭连接
注:如果使用了连接池,关闭连接对象不会真正地关闭对数据源地连接。
如果只用DataAdapter,就不必显式地打开和关闭连接。当调用这些对象的方法时(Fill方法、Update方法)会自动检查连接是否打开。

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
SqlTypeOleDbType:参数的数据类型。
  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();

注:SQL Server .Net数据提供程序不支持通用的参数标记"?",而需要用"@"做前缀来命名参数。