2013-10-03 8 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. Поэтому сначала создайте DbCommand, используя свой открытый DbConnection, установите Commandtext в свою строку, добавьте все параметры (например, @BillNo), а затем выполните команду.

Смежные вопросы