关于c#:TextBox.Text在Dapper中不起作用

TextBox.Text does not work in Dapper

我是新来的衣冠楚楚的。当用户在下拉样式文本框中选择一个项目名称并单击选择按钮时,该特定行应添加到DataGridView中。

问题是txt_sell_item.text不会检索值并将其添加到DataGridView中。相反,如果我在查询中只写itemname='bread',它就会工作。(bread是数据库中"我的itemname"列中的一个项目)

[我还将我的DataGridView与Order类绑定]

我的选择按钮单击事件是。

1
2
3
4
5
6
7
8
    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();  
    }

我的订单是…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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是

></P></p>
<hr><P>这与dapper无关,但它是查询字符串上的一个错误。你应该把它写为(只需加上最初的$就可以理解你的txt_sell_item.text)</P></p>
<div class=

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

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

所以查询文本变成

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

命令是

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