2013-10-03 111 views
0

我有这个代码中的“必须声明标量变量@BillNo”问题不知道如何解决它。我对C#和编程非常陌生。我已经评论了其他标量变量来理解,但仍然存在问题。数据插入时,我不使用标量变量,但我需要使用它们。必须声明标量变量@BillNo

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       db = new DBConnection(); 

       String Sqlstr1 = "select UnitPrice from AItem where ItemID = '" + tbItemID.Text + "'"; 
       db.DataRead(Sqlstr1); 
       int UnitPrice = Convert.ToInt32(db.dr["UnitPrice"]); 
       int qty = Convert.ToInt32(tbQuantity.Text);   
       int sum = (UnitPrice * qty); 

       String fday = Convert.ToString(db.now.AddDays(7)); 

       int billno = DateTime.Now.DayOfYear; 



       String Sqlstr3 = "insert into Sales (ItemID ,BillNo ,Qty ,Sum, FinalDay) values ('" + tbItemID.Text + "' ,@BillNo,'" + qty + "' ,'" + sum + "' ,'" + fday + "')"; 


       //db.cmd.Parameters.AddWithValue("@ItemID", tbItemID.Text); 
       db.cmd.Parameters.AddWithValue("@BillNo" , billno); 
       //db.cmd.Parameters.AddWithValue("@Qty", tbQuantity.Text); 
       //db.cmd.Parameters.AddWithValue("@Sum", (UnitPrice * qty)); 
       //db.cmd.Parameters.AddWithValue("@FinalDay", db.now.AddDays(7)); 

       if (db.Execute(Sqlstr3) == 1) 
       { 
        MessageBox.Show("added"); 
       } 
       else 
       { 
        MessageBox.Show("something went wrong"); 
       }  


      } 
      catch (SqlException m) 
      { 
       MessageBox.Show(m.Message); 

      } 
      catch (NullReferenceException m) 
      { 
       MessageBox.Show(m.Message); 

      } 
      catch (InvalidOperationException m) 
      { 
       MessageBox.Show(m.Message); 

      } 
    } 
} 
+1

检查出在这里: http://stackoverflow.com/questions/7181976/must-declare-the-scalar-variable –

+0

它没有帮助的问题不是在SQL的标量变量:( – user2566013

+0

正如上文我的答案在你的sql字符串下面包含标量变量@BillNo,它不在你的数据库中设置,所以首先在sql命令中设置你的参数(并使用一个sql命令而不是将你的字符串发布到数据库中)。 –

回答

0

你应该不执行一个字符串,而是执行一个DbCommand。因此,首先使用打开的DbConnection创建一个DbCommand,将Commandtext设置为您的字符串,添加所有参数(例如@BillNo),然后执行该命令。