1

datagridview のコンボ ボックスの値に応じて、SQL DB の列からデータを取得しようとしています。コードは次のとおりです。

 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs 
 {
        using (SqlConnection conn = new SqlConnection("Data Source=POSSERVER\\SQLEXPRESS;Initial Catalog=ms;Integrated Security=True"))
        {
            string priceselected = ("SELECT price FROM Table_1 WHERE name=" + dataGridView1.CurrentRow.Cells[0].Value.ToString());
            SqlCommand cmd = new SqlCommand(priceselected, conn);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
 } 

値段をつけたいdataGridView1.CurrentRow.Cells[2]

しかし、コンボボックスからアイテムを選択するたびにsqlexceptionが発生します

何か助けて??

4

1 に答える 1

2

列のデータ型NameがVARCHARの場合、文字列リテラルであるため、値を一重引用符で囲む必要があります。

string _val = dataGridView1.CurrentRow.Cells[0].Value.ToString();
string priceselected = ("SELECT price FROM Table_1 WHERE name='" + _val + "'");

ただし、クエリは。で脆弱ですSQL Injection。クエリをパラメータ化してください。

string _val = dataGridView1.CurrentRow.Cells[0].Value.ToString();
string priceselected = ("SELECT price FROM Table_1 WHERE name=@val");
SqlCommand cmd = new SqlCommand(priceselected, conn);
cmd.Parameters.AddWithValue("@val", _val);
conn.Open();
cmd.ExecuteNonQuery();
于 2013-03-21T08:57:39.770 に答える