SQL插入语法,数据库未更新
本文关键字:更新 数据库 插入 语法 SQL | 更新日期: 2023-09-27 18:03:58
编辑
我更改了代码,所以我使用了:["+Time1+"]而不是参数。这是第一次工作,但当时间增加0.5时,它将保持为false。在我尝试MessageBox时,for循环正在工作。显示("+Time1+"(;在for循环中。
for (double Time = time_began_5; Time < time_finished_5; Time = Time + 0.5)
{
string Time1 = Time.ToString("0.00");
try
{
SqlConnection cn = new SqlConnection("Data Source=.''SqlExpress;Initial Catalog=AllensCroft;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework;");
cn.Open();
SqlCommand Command = new SqlCommand("INSERT INTO Slots ([Date],[RoomID],[" + Time1 + "]) Values (@date,@room,1)", cn);
Command.Parameters.AddWithValue("date", date);
Command.Parameters.AddWithValue("room", rooms_combo.SelectedValue);
Command.ExecuteNonQuery();
try
{
cn.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
- 您在第3列(时间(之前有一个
@
- 添加参数时,需要添加
@
- 在insert语句中,您试图将true作为布尔值插入
time
列
SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date,RoomID,time) " + "Values (@date,@room,@time)", cn);
Command.Parameters.AddWithValue("@date", date);
Command.Parameters.AddWithValue("@room", rooms_combo.SelectedValue);
Command.Parameters.AddWithValue("@time", Time);
编辑评论后。试试这个:
SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date,RoomID,[" + Time1 + "]) " + "Values (@date,@room,@time)", cn);
Command.Parameters.AddWithValue("@date", date);
Command.Parameters.AddWithValue("@room", rooms_combo.SelectedValue);
Command.Parameters.AddWithValue("@time", true);
您将变量列为列名(@time(
编辑
就在这里:
INSERT INTO Slots (Date, RoomID,
--->>@时间<lt<---危险将会恶化,危险
要修复它,您需要将其更改为表中的列名,或者将其删除
例如:
INSERT INTO Slots (Date, RoomID, time)
您不能在列列表中包含变量,我想您希望@Time在值列表中显示true所在的位置。
编辑:要将时间作为列名注入,请执行一些C#字符串操作:
SqlCommand Command = new SqlCommand("INSERT INTO Slots (Date, RoomID, [" + time + "]) Values (@date, @room, 1)", cn);
再次编辑:true不是T-SQL关键字,T-SQL位列的值为1或0
现在您不想将时间作为参数添加到查询中。