我是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是
答案 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});