首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# OleDbCommand连接属性

C# OleDbCommand连接属性
EN

Stack Overflow用户
提问于 2015-12-25 20:18:52
回答 2查看 401关注 0票数 2

我想知道为什么这段代码不能工作,因为我已经构建了一个连接到数据库并打开连接的方法。我认为这是因为我跳过了OleDbCommand Connection属性的使用。是否强制使用此属性?

我将Connection()方法直接分配给OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees", Connection().Open());对象的尝试也没有奏效。

代码语言:javascript
复制
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;
}


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-25 20:28:09

这条线

代码语言:javascript
复制
OleDbCommand cmd = new OleDbCommand("SELECT City FROM Employees", Connection().Open()); 

无法工作,因为您试图将Open的结果作为OleDbCommand构造函数的第二个参数传递,但是这是一个空方法,所以您的代码甚至不编译。

每当尝试执行命令时,都需要将命令连接属性设置为有效连接,并且在执行命令时应该打开该连接。

在创建连接时,可以使用已经建立的良好实践,您应该有一个很好的理由来遵循它。

代码语言:javascript
复制
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语句确保代码中的一次性对象在异常情况下也被关闭和释放。

票数 2
EN

Stack Overflow用户

发布于 2015-12-25 20:30:20

您应该添加这样的代码:

代码语言:javascript
复制
// Set the Connection to the new OleDbConnection.
command.Connection = connection;

参考文献

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34466107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档