data providers对象
一. connection对象
connection有两种类型: SQLConnection和OleDbConnection。它们的使用方法是比较类似:在创建连接时在类的构
造器里指定连接字符串,然后调用Open方法打开连接
例1:
public void SqlConnection()
{
string connectionstring="Provider=SQLOLEDB;Data Source=(local);"+"Initial
Catalog=databasename;uid=userName;pwd=password;"+"Integrated Security=SSPI;";
try
{
SqlConnection myConnection=new SqlConnection(connectionString);
}
catch(SqlException e)
{
}
}
例2:
public void OleConnection(string connectionString)
{
if(connectionString=="")
{}
try
{
OleDbConnection myConnection= new OleDbConnection();
myConnection.ConnectionString=connectionString;
}
catch(OleDbException e)
{}
}
二. Command对象
通过Connection对象连接到数据库之后,就可以使用Command对象对数据库进行操作。一个Command可以用典型的SQL
语句来表达,包括执行选择查询来返回记录集,执行行动查询来更新数据库的记录,或者创建并修改数据库的表结
构。
Command 对象也有两种类型:SqlCommand和OleDbCommand,分别对应于两种数据源类型。可以通过SqlCommand对象直
接操作SQL Server数据库,通过OleDbCommand操作支持ADO Managed Provider的数据源。
使用构造方法来创建Command对象时,必须通过构造函数参数表指定一个SQL语句,该语句用来在数据源上执行。另
外还必须传递一个Connection对象,该对象是Command对象和数据源交互的通道。
例1:
SqlCommand sqlcmd = new SqlCommand("Sql语句",sqlconn);
OleDbCommand oledbcmd=new OleDbCommand("Sql语句",oledbconn);
另外,也可以通过Connection对象生成Command对象的实例
例2:
SqlCommand sqlcmd=sqlconn.CreateCommand();
sqlcmd.CommandText="sql语句";
OleDbCommand oledbcmd=oledbconn.CreateCommand();
oledbcmd.CommandText="sql语句";
创建了Command对象后,可以使用它的一系列Execute方法来完成命令的执行。
1. 返回数据流
SqlDataReader dr=sqlcmd.ExecuteReader();
2. 返回一个XmlReader对象
sqlcmd.CommandText="Select * from students";
XmlReader xr=sqlcmd.ExecuteXmlReader();
3.返回单个值
sqlcmd.CommandText = "select count(*) from students";
sqlcmd.ExecuteScalar();
4.不希望返回值
sqlcmd.CommandText = "delete * from students where age=20";
sqlcmd.ExecuteNonQuery();
Command对象不仅可以在数据源上执行SQL语句,也可以调用数据源提供的存储过程。
三. DataReader 对象
使用Connection 对象和Command对象来同数据库连接并交互后,有两种办法来访问获得的结果,一是使用
DataReader来逐行地从数据源获取数据并处理,一是使用DataSet对象来将数据放置到内存中进行处理。
不可能使用DataReader对象的构造函数来创建一个DataReader,这是因为DataReader没有公共的构造方法。
DataReader和数据源类型紧密相连,也有两种类型:SqlDataReader和OleDbDataReader,分别对应于SQL Server数据
源和OLE DB数据源。
SqlDataReader sqldr=sqlcmd.ExecuteReader();
while(sqldr.Read())
Console.WriteLine(sqldr.GetString(3));
GetValue方法获得一个对象,对象的类型为该列数据的原始类型和格式。
DataReader对象具有索引器,因此可以使用DataReaderObject[int]或DataReaderObject["ColumnName"]的形式来访
问各个列的数据。
四. DataAdapter对象
通过DataAdapter对象建立,初始化DataTable(数据表),从而和DataSet对象结合起来在内存中存放数据。
DataAdapter对象能隐藏和Connection,Command对象沟通的细节。
DataAdapter对象允许将DataSet对象中的数据保存到数据源,也可以从数据源取出数据。同理,也可以对底层数据
保存体进行数据的添加、删除或修改操作。
DataAdapter对象包含4个不同类型的Command.
1).SelectCommand:用来取得数据源中的记录。
2).InsertCommand:用来添加记录到数据源。
3).UpdateCommand:用来更新数据源中的记录。
4).DeleteCommand:删除数据源中的记录。
下面两段代码根据数据源的不同分别使用不同的DataAdapter对象。
1.通过SqlDataAdapter对象进行查询:
public DataSet SelectSqlSrvRows(DataSet dataset, string connection, string query)
{
SqlConnection conn=new SqlConnection(connection);
SqlDataAdapter adapter=new SqlDataAdapter();
adapter.SelectCommand=new SqlCommand(query,conn);
adapter.Fill(dataset);
return dataset;
}
2. 通过OleDbDataAdapter对象进行查询:
public DataSet SelectOleDbSrvRows(DataSet dataset,string connection,string query)
{
OleDbConnection conn=new OleDbConnection(connection);
OleDbDataAdapter adapter=new OleDbDataAdapter();
adapter.SelectCommand=new OleDbCommand(query, conn);
adapter.Fill(dataset);
return dataset;
}