TextBox.Text在Dapper中不起作用

时间:2017-10-14 08:30:07

标签: c# sql-server winforms textbox dapper

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

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

[我还将我的datagridview与订单类绑定]

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

    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();  
    }

我的订单类是......

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是

1 个答案:

答案 0 :(得分:2)

这与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});