TextBox.Text ne fonctionne pas dans Dapper

c# dapper sql-server textbox winforms

Question

Je suis nouveau dans Dapper. Lorsque l'utilisateur sélectionne un nom d'élément dans la zone de texte de style déroulant et clique sur Sélectionner le bouton, cette ligne particulière doit être ajoutée dans la grille de données.

Le problème est que txt_sell_item.Text ne retrive pas la valeur et l'ajoute dans la grille de données. Au lieu de cela, je viens d'écrire ItemName = 'bread' dans ma requête, cela fonctionne. ('pain' est un élément de ma colonne ItemName dans la base de données)

[Je lie également mon datagridview à la classe de commande]

Mon bouton Select Click Event est.

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

Ma classe de commande est ...

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

Mon interface graphique est

Réponse acceptée

Cela n'a rien à voir avec Dapper, mais c'est une erreur sur votre chaîne de requête.
Vous devriez l'écrire comme (en ajoutant simplement le $ initial pour comprendre votre txt_sell_item.Text)

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

Cependant, vous ne concaténerez pas ensemble des chaînes pour générer la commande sql, mais vous devez utiliser une requête paramétrée.

Ainsi, le texte de la requête devient

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

et la commande est

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi