0

编辑

我更改了代码,所以我使用:[" + Time1 + "] 而不是参数。这是第一次工作,但是当时间增加 0.5 时,它仍然是错误的。当我尝试 MessageBox.Show("" + Time1 + ""); 时,for 循环正在工作 在 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());
            }

        }
4

3 回答 3

2
  1. @您在第三列(时间)之前 有一个。
  2. 添加参数时,您需要添加@.
  3. 在您的插入语句中,您试图将 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);
于 2013-03-13T19:42:53.207 回答
0

您不能在列列表中包含变量,我假设您希望 @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

现在您不想将时间作为参数添加到查询中。

于 2013-03-13T19:38:58.707 回答
0

您将变量列为列名 (@time)

编辑
在这里:

INSERT INTO Slots (Date, RoomID, --->>> @time <<<--- 危险会鲁滨逊,危险

要修复它,您需要将其更改为表中的列名,或者将其删除。

所以像这样的东西,例如:

INSERT INTO Slots (Date, RoomID, time)

于 2013-03-13T19:39:58.310 回答