繁体   English   中英

如何使用OleDb将Visual Studio c#中MS-Access的值插入到textBox中?

[英]how do I insert into a textBox a value from MS-Access in visual studio c# using OleDb?

我正在尝试从Access获取值并将其放在字符串变量或文本框中,我正在使用MS-Visual Studio 2012和Access 2007

string sql = "SELECT [Time Checked-In] FROM HotelCustomers WHERE [Room Number] =" + textBox1.Text + ";";
        string my_Connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\Users\\Acer\\Documents\\HotelCustomersOld.mdb";
        OleDbConnection myCon = new OleDbConnection(my_Connection);
        myCon.Open();
        DataTable dataTable = new DataTable();
        OleDbDataAdapter adapter = new OleDbDataAdapter(sql, my_Connection);
        adapter.Fill(dataTable);
        string aString = dataTable.Rows[0]["Time Checked-In"].ToString();
        textBox1.Text = aString;

您的问题可能是由于在HotelCustomers表中使用的名称。 OleDb可能会将其更改为合法的使用方式。

您可以重新编写SQL以使用对OleDb更友好的内容:

  string sql = "SELECT [Time Checked-In] AS CheckIN FROM HotelCustomers WHERE [Room Number] =" + textBox1.Text + ";";

就是说,对于此简单查询,您不需要OleDbDataAdapterDataTable的开销。

private const string CONN_STR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\Users\\Acer\\Documents\\HotelCustomersOld.mdb";

private string GetCheckInTime(string roomNumber) {
  string sql = "SELECT [Time Checked-In] AS CheckIN FROM HotelCustomers WHERE [Room Number] =" + roomNumber + ";";
  object obj = null;
  using (var cmd = new OleDbCommand(sql, new OleDbConnection(CONN_STR))) {
    cmd.Connection.Open();
    obj = cmd.ExecuteScalar();
    cmd.Connection.Close();
  }
  if ((obj != null) && (obj != DBNull.Value)) {
    return obj.ToString();
  }
  return null;
}

连接字符串永远不会改变,因此我将其设为常量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM