【问题标题】:C# Query MS-Access Table and place read values from column in a text boxC# 查询 MS-Access 表并将列中的读取值放在文本框中
【发布时间】:2017-02-14 23:09:52
【问题描述】:

下面是我的代码的快照。我正在尝试访问客户表中的唯一列并将值放入表单上的文本框中。在将dr 声明为OleDbDataReader 对象的行中,我的代码"InvalidOperationException was unhandled" 不断出现错误。

  1. 下面的代码有什么问题会导致此错误?

  2. 我应该做一个列表从数据库中挑选出我想要的文本吗?

  3. 如何将访问中的列值返回到 C# 中的列表中,以便在列表中搜索特定值?

    string strsql = "Select * from Customer";
    OleDbCommand cmd = new OleDbCommand();
    
    cmd.CommandText = strsql;
    conn.Open();
    
    OleDbDataReader dr = cmd.ExecuteReader();
    
    
    
    while(dr.Read())
    {
        textBox1.Text += dr["Customer"].ToString();
    }
    conn.Close();
    

【问题讨论】:

    标签: c# ms-access-2010


    【解决方案1】:

    命令携带要执行的信息,连接携带信息到达数据库服务器。这两个对象应该链接在一起以产生任何结果。你错过了那一行

    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandText = strsql;
    cmd.Connection = conn; // <= here
    conn.Open();
    

    还请记住,disposable 对象(如命令、读取器和连接)应在使用后立即disposable。对于这种模式,存在 using 语句

    所以你应该写

    string cmdText = "Select * from Customer";
    using(OleDbConnection conn = new OleDbConnection(.....constring...))
    using(OleDbCommand cmd = new OleDbCommand(cmdText, conn))
    {
        conn.Open();
        using(OleDbDataReader reader = cmd.ExecuteReader())
        {
            while(reader.Read())
               .....
        }
    }
    

    【讨论】:

      【解决方案2】:

      这是一些示例代码。

      try
                  {
                      using (OleDbConnection myConnection = new OleDbConnection())//make use of the using statement 
                      {
                          myConnection.ConnectionString = myConnectionString;
                          myConnection.Open();//Open your connection
                          OleDbCommand cmdNotReturned = myConnection.CreateCommand();//Create a command 
                          cmdNotReturned.CommandText = "someQuery";
                          OleDbDataReader readerNotReturned = cmdNotReturned.ExecuteReader(CommandBehavior.CloseConnection);
                              // close conn after complete
                          // Load the result into a DataTable
                          if (readerNotReturned != null) someDataTable.Load(readerNotReturned);
                     }
                  }
      

      之后,您将拥有一个包含您的数据的数据表。当然,您可以随后以任何您喜欢的方式在数据表中搜索记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多