2013-04-09 126 views
0

我想从访问的值,并把它放在一个字符串变量或一个文本框,我使用MS-的Visual Studio 2012和Access 2007如何在Visual Studio中使用OleDb在Visual Studio中插入MS-Access中的值?

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; 
+0

你的代码在哪里?你尝试过什么吗? – Sachin 2013-04-09 20:53:28

+0

欢迎来到Stack Overflow。请问,当你需要显示导致你的问题的代码,否则这是一个猜测发布有效答案 – Steve 2013-04-09 20:57:49

+0

,现在有什么问题?你遇到了什么错误? – Sachin 2013-04-09 21:05:29

回答

0

你的问题是因为这个名字的可能用于您的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; 
} 

连接字符串永远不会改变,所以我使它成为一个常量。

+0

差不多完成了,但又出现了另一个错误:标准表达式中的数据类型不匹配。在行:obj = cmd.ExecuteScalar(); – 2013-04-09 21:57:04

+0

谢谢,已完成 – 2013-04-09 22:25:01