2013-04-09 3 views
0

Я пытаюсь получить значение от доступа и поместить его в строковой переменной или TextBox, я использую MS-Visual Studio 2012 и Access 2007Как вставить в текстовое поле значение из MS-Access в visual studio C# с помощью OleDb?

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

+0

Добро пожаловать в переполнение стека. Пожалуйста, при запросе вам нужно показать код, вызывающий проблемы, в противном случае это сообщение о правильном ответе – Steve

+0

, и теперь в чем проблема? какую ошибку вы получаете? – Sachin

ответ

0

Ваша проблема, скорее всего, из-за названия используется в вашей таблице HotelCustomers. Вполне вероятно, что OleDb меняет его на то, что является законным для его использования.

Вы можете повторно написать SQL, чтобы использовать что-то более OleDb дружественный:

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

Тем не менее, вам не нужно трудозатраты на OleDbDataAdapter или DataTable для этого простого запроса.

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

почти все сделано, но возникла еще одна ошибка: несоответствие типа данных в выражении критериев. at line: obj = cmd.ExecuteScalar(); –

+0

спасибо, все сделано –

Смежные вопросы