2016-10-27 5 views
1

В C# я хочу использовать данные доступа, чтобы заполнить мой TextBox Я использую ADO.NET для подключения к access.So далеко я получил это:Хочет заполнить текстовое поле с данными доступа

OleDbConnection con = new OleDbConnection(Price.constr); 
     OleDbCommand cmd = new OleDbCommand(); 
     cmd.Connection=con; 
     cmd.CommandText = "select * from Table1"; 
     OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 

Цены .constr - это мое соединение String. Я хочу заполнить textBox1 данными в ценовом столбце, где мой номер строки = 1. (Пример)

+0

Таким образом вы читаете ВСЕ таблицы1. Если вы хотите прочитать только одну запись, вам нужно добавить инструкцию WHERE к вашему запросу. И если есть только одна запись, используйте OleDbDataReader вместо заполнения DataTable через адаптер. – Steve

+0

@Steve. Я не знаю команды для заполнения текстового поля, я знаю его с помощью dataGridView, выбирая строку, но я не знаю, как сделайте это без dataGridView. – Rjey

ответ

1

Если вы хотите прочитать только одну запись из своей таблицы, тогда нет необходимости возвращать всю таблицу и используйте адаптер для заполнения данных. Вы можете просто попросить базу данных, чтобы вернуть только запись вас интересуют.

string cmdText = "select * from Table1 WHERE ID = 1"; 
using(OleDbConnection con = new OleDbConnection(Price.constr)) 
using(OleDbCommand cmd = new OleDbCommand(cmdText, con)) 
{ 
    con.Open(); 
    using(OleDbDataReader reader = cmd.ExecuteReader()) 
    { 
     if(reader.Read()) 
      textBox1.Text = reader["Price"].ToString(); 
     else 
      textBox1.Text = "No record found"; 
    } 
} 

У меня есть заключите соединения, команду и читатель в использовании заявления, потому что это одноразовые предметы, и это хорошая практика, чтобы уничтожить их когда вы закончите использовать их. (В частности, соединение может вызвать проблемы, если вы его не выбрали)

Обратите внимание, что я использовал константу 1 для извлечения записи. Готов поспорить, что вы хотите, чтобы это было динамичным, и в этом случае я предлагаю вам посмотреть, как PARAMETRIZE ваши запросы. (Не выполняйте конкатенации строк)

+0

Это не работает человек :( – Rjey

+0

Пожалуйста, объясните. У вас есть сообщение об ошибке? – Steve

+0

Нет сообщений об ошибке. Я помещаю эту вещь, которую вы написали в функции загрузки формы, но она не помещает данные в текстовое поле – Rjey

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