我想知道为什么这段代码不能工作,因为我已经构建了一个连接到数据库并打开连接的方法。我认为这是因为我跳过了OleDbCommand Connection属性的使用。是否强制使用此属性?
我将Connection()方法直接分配给OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees", Connection().Open());对象的尝试也没有奏效。
using System;
using System.Data;
using System.Data.OleDb;
class KDRM
{
static void Main()
{
OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees");
Connection().Open();
OleDbDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr.GetString(0));
}
Console.ReadLine();
}
public static OleDbConnection Connection()
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Connection...";
return conn;
}
}发布于 2015-12-25 20:28:09
这条线
OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees", Connection().Open()); 无法工作,因为您试图将Open的结果作为OleDbCommand构造函数的第二个参数传递,但是这是一个空方法,所以您的代码甚至不编译。
每当尝试执行命令时,都需要将命令连接属性设置为有效连接,并且在执行命令时应该打开该连接。
在创建连接时,可以使用已经建立的良好实践,您应该有一个很好的理由来遵循它。
static void Main()
{
using(OleDbConnection cn = Connection())
using(OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees", cn);
{
cn.Open();
using(OleDbDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
....
}
}
}
Console.ReadLine();
}using语句确保代码中的一次性对象在异常情况下也被关闭和释放。
发布于 2015-12-25 20:30:20
https://stackoverflow.com/questions/34466107
复制相似问题