2017-01-08 6 views
-1

データグリッドビューでデータを表示する必要があるフォームページを作成しています。ユーザーがグリッドビューからアイテムを追加すると、それは在庫から取り除かれ、ユーザーが追加ボタンを押したときに在庫を更新する必要があります。データベースから特定のセルのデータを削除してマイナスする

私が使用していたコードが私にこの例外を与えている:

(追加情報:「=」付近に正しくない構文)

private void btnMoveItem_Click(object sender, EventArgs e) 
    { 
     SqlConnection con2 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True"); 
     con2.Open(); 
     String Quary1= "DELETE FROM Inventory WHERE id = " + tbID.Text + ""; 

     SqlCommand sqlcmd1 = new SqlCommand(Quary1,con2); 
     sqlcmd1.ExecuteNonQuery(); 

     SqlCommand sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity" +"WHERE id= " + tbID, con2); 
     sqlcmd.Parameters.AddWithValue("@Item", this.nudQuantity.Text); 
     sqlcmd.ExecuteNonQuery(); 

     con2.Close(); 
    } 
+1

'' @ Quantity'''と '' 'WHERE id =' '' – Kalten

+0

の間に空白はありません。スペースを取り除くだけでいいですか? –

+0

追加する必要があります – Kalten

答えて

0

エラーは、間にスペースを入れずに2つの文字列を連結することです。

他にも多くのエラーがあります。

すべてのユーザー値は、正しい型のsqlパラメーターである必要があります。 nudQuantity.Textを解析/検証する必要があります。たぶんidでしょう。

string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True"; 
using (var con2 = new SqlConnection(connectionString)) 
{ 
    con2.Open(); 
    var Quary1 = "DELETE FROM Inventory WHERE id = @id"; 

    var sqlcmd1 = new SqlCommand(Quary1, con2); 
    sqlcmd1.Parameters.AddWithValue("@id", tbID.Text); 
    sqlcmd1.ExecuteNonQuery(); 

    var sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity WHERE [email protected]", con2); 
    sqlcmd.Parameters.AddWithValue("@id", tbID.Text); 
    sqlcmd.Parameters.AddWithValue("@Quantity", int.Parse(nudQuantity.Text)); 
    sqlcmd.ExecuteNonQuery();  
} 

また、これらの2つのクエリを1つにマージすることもできます。 このクエリは、もっと必要なものである必要があります。

UPDATE Inventory SET Quantity = [email protected] WHERE [email protected]; 
DELETE FROM Inventory WHERE id = @id AND Quantity <= 0; 

ただし、ここでは製品の有無は確認されていません。 @QuantityがQuantityより大きい場合、エラーはスローされません。

+0

今この例外を出しています追加情報:スカラー変数 "@id"を宣言しなければなりません。 –

+0

申し訳ありません私はC#とSQLの非常に新しいです。私は非常に基本的な知識を持っています –

+0

私は答えを編集しました。 '' @ item'''を '' '@ id'''に置き換えました。 – Kalten

関連する問題