SQL插入语法,数据库不更新

时间:2013-03-13 19:36:24

标签: c# sql database visual-studio-2010 insert

修改

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

答案 0 :(得分:2)

  1. 您的第3列(时间)之前有@
  2. 添加参数时,需要添加@
  3. 在插入语句中,您尝试将true作为布尔值插入time列。
  4. 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);
    

答案 1 :(得分: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

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

答案 2 :(得分:0)

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

修改
就在这里:

INSERT INTO Slots (Date, RoomID, ---&gt;&gt;&gt; @time &lt;&lt;&lt; --- DANGER WILL ROBINSON,DANGER

要解决此问题,您需要将其更改为表中的列名,否则请将其删除。

这样的事情,例如:

INSERT INTO Slots (Date, RoomID, time)