У меня есть проблема «объявить скалярную переменную @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);
}
}
}
Проверьте здесь: http://stackoverflow.com/questions/7181976/must-declare-the-scalar-variable –
Его не полезно проблема не на SQL его на скалярных переменных :( – user2566013
Как уже упоминалось в мой ответ ниже вашей строки sql содержит скалярную переменную @BillNo, которая не установлена в вашей базе данных. Поэтому сначала установите свой параметр в команде sql (и используйте команду sql вместо публикации вашей строки в базе данных). –