ADO.NET在处理数据时,可分为连接式与断开式
ADO.NET涉及到的主要对象:
连接对象:Connection
命令对象:Command
数据读取器对象:DataReader
数据适配器对象:DataAdapter
数据集对象: DataSet
下面是一个简单的ADO.NET连接式访问数据库的代码
private static void ReadOrderData(string connectionString)
{
string queryString =
"SELECT OrderID, CustomerID FROM dbo.Orders;";
//此处使用using来自动释放connection
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// SqlDataReader 的默认位置在***条记录前面。因此,必须调用 Read 来开始访问任何数据
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
// 关闭reader
reader.Close();
//对于SqlConnection的MARS模式关闭的情况下,一次只能打开一个 SqlDataReader,在***个关闭之前,打开另一个的任何尝试都将失败。另外,在reader不关闭之前,相同的command.ExecuteReader();将会失败(无论是否为MARS)
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
接下来对上面这段代码做一些说明:
代码:
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
- 1.
- 2.
使用了reader的索引器,
索引器调用所的方法如下:
override public object this[int i] {
get {
return GetValue(i);
}
}
override public object this[string name] {
get {
return GetValue(GetOrdinal(name));
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
(二)关于command的一些方法的说明
ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数。 (重写 DbCommand..::.ExecuteNonQuery()()()。)
ExecuteReader 已重载。 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。
ExecuteScalar 执行查询,并返回查询所返回的结果集中***行的***列。忽略其他列或行。 (重写
DbCommand..::.ExecuteScalar()()()。)
ExecuteXmlReader 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。
(三)关于connectionstring
以下是常用的几种connectionstring
//基本
string baseconnstr="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword";
//MARS
string marsconnstr="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
+"MultipleActiveResultSets=true"
//在app_data文件夹中的sqlexpress.mdf
string mdfDataDir="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;"
//使用SQL集群故障转移
string mirrorconnstr="Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;"
//异步
string asynconnstr="Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;"
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
MARS中,其实ADO.NET是对未关闭的sqlcommand挂起.所以datareader只能使用其各自的command实例.
【编辑推荐】