TextBox.Text 在 Dapper 中不起作用

TextBox.Text does not work in Dapper

我是 Dapper 的新手。当用户在下拉式文本框中选择项目名称并单击 Select Button 时,该特定行应添加到 datagridview 中。

问题是 txt_sell_item.Text 没有检索值并将其添加到 datagridview 中。相反,如果我只是在我的查询中写 ItemName='bread' 它就可以了。 ('bread' 是我在数据库中的 ItemName 列中的一个项目)

[ 我也将我的 datagridview 绑定到 Order Class]

我的 Select 按钮点击事件是。

    using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
    {
         if (db.State == ConnectionState.Closed)
            db.Open();
            string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName='{txt_sell_item.Text}'";
            ordersBindingSource.DataSource = db.Query<Orders>(query, commandType: CommandType.Text);
            dataGridView1.Refresh();  
    }

我的订单 Class 是...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    public class Orders
    {
        public int    ItemId      { get; set; }
        public string ItemName    { get; set; }
        public string Brand       { get; set; }
        public string Category    { get; set; }
        public int    Quantity    { get; set; }
        public int    Price       { get; set; }
    }
}

我的 GUI 是

这与 Dapper 无关,但这是您的查询字符串错误。
你应该把它写成(只需添加初始 $ 来理解你的 txt_sell_item.Text)

string query = $"SELECT * FROM tbl_ItemDetail WHERE itemName='{txt_sell_item.Text}'";

然而,您不会将字符串连接在一起来构建 sql 命令,而是需要使用参数化查询。

所以查询文本变为

string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName=@ItemName";

命令是

ordersBindingSource.DataSource = db.Query<Orders>(query, new {ItemName = txt_sell_item.Text});