通过单击按钮将Access中的数据放入C#中的文本框中

本文关键字:文本 数据 按钮 Access 单击 | 更新日期: 2023-09-27 18:00:33

我在MS Access中有一个表,其中包含:(FoodID,FoodName,Price)。

在C#中,我有三个文本框(txtId、txtName、txtPice)和一个按钮(btnSearch)。我的问题是,在C#中,我只需在(txtId)中键入FoodID,然后单击"搜索"按钮,它将在txtName和txtPice中单独显示FoodName和Price(来自表访问)。我从你那里得到了源代码,但它在(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();

通过单击按钮将Access中的数据放入C#中的文本框中

我假设FoodID是int。在这种情况下,您应该删除单引号

cmd。CommandText="select FoodName,Price from tablename where 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();
    }
}

我认为FoodId在数据库中是Integer类型的,但在查询中,您已经将其作为字符串传递,因此请将字符串转换为Integer。

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

这行代码似乎没有问题:

OleDbDataReader dr = cmd.ExecuteReader();// correct way

我认为问题出在:

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

您需要使用。文本框的文本属性

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