MadMyche
Правильный способ сделать это, как уже говорилось ранее, заключается в использовании Коллекция Параметров Sql[^].
Теперь самый простой способ реализовать в вашем случае будет разбить часть INSERT table and columns вашей команды на несколько строк следующим образом
INSERT TblCheckOut
( Name
, Address
, Mobile
, RoomType
, InDate
, OutDate
, Days
, RoomCharge
, RoomBill
, Otherservices
, TotalBill
, Status
)
А затем реплицируйте это в свои значения, предварительно ожидая амперсанда на различные имена столбцов, подобные этому для половины значений вашего запроса
VALUES
( @Name
, @Address
, @Mobile
, @RoomType
, @InDate
, @OutDate
, @Days
, @RoomCharge
, @RoomBill
, @Otherservices
, @TotalBill
, @Status
)
А потом возьми их
ценности еще раз; скопируйте их и предварительно добавьте эти строки с помощью
cmd.Parameters.AddWithValue
(заменять
УМК чтобы отразить имя переменной SqlCommand)
cmd.Parameters.AddWithValue("@Name", );
cmd.Parameters.AddWithValue("@Address", );
cmd.Parameters.AddWithValue("@Mobile", );
cmd.Parameters.AddWithValue("@RoomType", );
cmd.Parameters.AddWithValue("@InDate", );
cmd.Parameters.AddWithValue("@OutDate", );
cmd.Parameters.AddWithValue("@Days", );
cmd.Parameters.AddWithValue("@RoomCharge", );
cmd.Parameters.AddWithValue("@RoomBill", );
cmd.Parameters.AddWithValue("@Otherservices", );
cmd.Parameters.AddWithValue("@TotalBill", );
cmd.Parameters.AddWithValue("@Status", );
А затем вы заполняете значения из ваших текстовых полей, выпадающих списков и т. д... И теперь мы можем увидеть, какой предмет вы забыли
cmd.Parameters.AddWithValue("@Name", combocustomer.Text);
cmd.Parameters.AddWithValue("@Address", lbladdress.Text);
cmd.Parameters.AddWithValue("@Mobile", lblmobile.Text);
cmd.Parameters.AddWithValue("@RoomType", lbltype.Text);
cmd.Parameters.AddWithValue("@InDate", dateTimePicker1.Text);
cmd.Parameters.AddWithValue("@OutDate", dateTimePicker2.Text);
cmd.Parameters.AddWithValue("@Days", lbldays.Text);
cmd.Parameters.AddWithValue("@RoomCharge", txtroomcharge.Text);
cmd.Parameters.AddWithValue("@RoomBill", ); // missing value
cmd.Parameters.AddWithValue("@Otherservices", txtOtherServices.Text);
cmd.Parameters.AddWithValue("@TotalBill", txtTotoalBill.Text);
cmd.Parameters.AddWithValue("@Status", combostatus.Text);
И на самом деле в этом состоянии ваша программа, скорее всего, не будет компилироваться.
Очевидно, что как только вы все это проработаете, вы сможете удалить все разрывы строк; поэтому ваш окончательный код должен быть похож на этот
string str = "INSERT TblCheckOut (Name,Address,Mobile,RoomType,InDate,OutDate,Days,RoomCharge,RoomBill,Otherservices,TotalBill,Status) VALUES (@Name,@Address,@Mobile,@RoomType,@InDate,@OutDate,@Days,@RoomCharge,@RoomBill,@Otherservices,@TotalBill,@Status)";
SqlCommand cmd = new SqlCommand(str, conn);
cmd.Parameters.AddWithValue("@Name", combocustomer.Text);
cmd.Parameters.AddWithValue("@Address", lbladdress.Text);
cmd.Parameters.AddWithValue("@Mobile", lblmobile.Text);
cmd.Parameters.AddWithValue("@RoomType", lbltype.Text);
cmd.Parameters.AddWithValue("@InDate", dateTimePicker1.Text);
cmd.Parameters.AddWithValue("@OutDate", dateTimePicker2.Text);
cmd.Parameters.AddWithValue("@Days", lbldays.Text);
cmd.Parameters.AddWithValue("@RoomCharge", txtroomcharge.Text);
cmd.Parameters.AddWithValue("@RoomBill", ); // missing value
cmd.Parameters.AddWithValue("@Otherservices", txtOtherServices.Text);
cmd.Parameters.AddWithValue("@TotalBill", txtTotoalBill.Text);
cmd.Parameters.AddWithValue("@Status", combostatus.Text);
Теперь еще несколько замечаний по этому поводу:
1. все ваши значения вводятся в виде текста; некоторые из них кажутся числовыми или датами
2. у вас есть имена столбцов, которых обычно избегают, поскольку они являются специальными или зарезервированными словами