Ich bin neu in Dapper. Wenn der Benutzer im Drop-down-Stil Textfeld einen Elementnamen auswählt und auf die Schaltfläche Auswählen klickt, sollte diese bestimmte Zeile in datagridview hinzugefügt werden.
Problem ist, dass txt_sell_item.Text Wert nicht retrieve und es in Datagridview hinzufügt. Wenn ich stattdessen ItemName = 'Brot' in meine Abfrage schreibe, funktioniert es. ('Brot' ist ein Element in meiner ItemName-Spalte in der Datenbank)
[Ich binde auch meine Datagridview mit Order Class]
Mein Select Button Click Event ist.
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();
}
Meine Bestellklasse ist ...
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; }
}
}
Meine GUI ist
Dies hat nichts mit Dapper zu tun, aber es ist ein Fehler in Ihrer Abfragezeichenfolge.
Du solltest es schreiben als (füge einfach das erste $ hinzu, um dein txt_sell_item.Text zu verstehen)
string query = $"SELECT * FROM tbl_ItemDetail WHERE itemName='{txt_sell_item.Text}'";
Sie verketten jedoch keine Strings, um den Befehl sql zu erstellen, aber Sie müssen eine parametrisierte Abfrage verwenden.
So wird der Abfragetext
string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName=@ItemName";
und der Befehl ist
ordersBindingSource.DataSource = db.Query<Orders>(query, new {ItemName = txt_sell_item.Text});