C# 查询 MS-Access Table 并将从列中读取的值放在文本框中

C# Query MS-Access Table and place read values from column in a text box

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

  1. 下面的代码有什么问题会给我这个错误?

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

  3. 如何 return 在 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();
    

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

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

还请记住 disposable 对象,如命令、reader 和连接应在使用后立即 disposed。对于此模式,存在 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())
           .....
    }
}

这是一些示例代码。

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);
               }
            }

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