Получение данных из Access в текстовое поле в C #, нажав кнопку - PullRequest
0 голосов
/ 25 июня 2011

У меня есть таблица в MS Access, которая содержит: (FoodID, FoodName, Price).

В C # у меня есть три текстовых поля (txtId, txtName, txtPrice) и кнопка (btnSearch). Мой вопрос заключается в том, что в C # я просто набираю FoodID в (txtId), а затем нажимаю кнопку «Поиск». Он отображает FoodName и Price (из таблицы) в txtName и txtPrice. Я получил исходный код от вас, но он содержит ошибку (OleDbDataReader dr = cmd.ExecuteReader ();), его сообщение «Несоответствие типов данных в выражении критериев».

Пожалуйста, решите эту проблему для меня. Это весь исходный код, который я получил для вас.

System.Data.OleDb.OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "your connection string";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "select FoodName, Price from tablename where FoodID = '" + txtId + "' ";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();//error this line!
while(dr.Read())
{
     txtName.Text = dr["FoodName"].ToString();
     txtPrice.Text = dr["Price"].ToString(); 
}
dr.Close();
conn.Close();

Ответы [ 3 ]

4 голосов
/ 25 июня 2011

Я полагаю, FoodID это int.Вы должны удалить одинарные кавычки в этом случае

cmd.CommandText = "select FoodName, Price из имени таблицы, где FoodID =" + txtId;

Еще лучше - используйте параметры:

using (var connection = new OleDbConnection("your connection string"))
using (var command = connection.CreateCommand())
{
    command.CommandText = "select FoodName, Price from tablename where FoodID = @FoodID";
    command.Parameters.AddWithValue("FoodID", int.Parse(txtId.Text));
    connection.Open();
    var reader = command.ExecuteReader();
    while (reader.Read())
    {
        txtName.Text = reader["FoodName"].ToString();
        txtPrice.Text = reader["Price"].ToString();
    }
}
0 голосов
/ 25 июня 2011

Я думаю, что проблема в:

cmd.CommandText = "select FoodName, Price from tablename where FoodID = '" + txtId + "' ";

Вам необходимо использовать .Text Property of Textbox

cmd.CommandText = "select FoodName, Price from tablename where FoodID = '" + txtId.Text + "' ";
0 голосов
/ 25 июня 2011

Я думаю, что FoodId имеет тип Integer в базе данных, но здесь, в запросе, который вы передали в виде строки, преобразуйте строку в целое число.

cmd.CommandText = "select FoodName, Price from tablename where FoodID = '" + int.Parse(txtId.Text) + "' " ;

Кажется, с этой строкой проблем неткода:

OleDbDataReader dr = cmd.ExecuteReader();// correct way
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...