2013-10-03 116 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),然後執行該命令。