INSERT INTO命令不起作用

时间:2013-03-25 18:24:21

标签: c# sql sql-server insert sql-server-ce

在开始之前,我会告诉您,在我考虑自己发布问题之前,我已经尝试了之前问题和其他网站上已经提出的所有内容。事实上,似乎没有任何效果,我只是厌倦了这一点。

作为一些背景信息,这是针对我的计算A2项目,所以我现在有点时间了 - 也就是说我不能理想地改变代码的负载。

无论如何,关于这个问题...... 我在我的代码中使用SQLCe从各种表读取并写入一个。到目前为止,从表中读取的代码工作正常,因此任何连接都会先发布。我正在努力解决的一段代码如下:

        string connectionString = Properties.Settings.Default.BookingSystemDatabaseConnectionString;
        using (SqlCeConnection myConnection = new SqlCeConnection(connectionString))
        {
            myConnection.Open();
            try
            {
                string commandStr = "INSERT INTO bookings(username, room, time) VALUES(@username, @room, @time)";
                SqlCeCommand myCommand = new SqlCeCommand(commandStr);
                //Passes parameters into SQL command.
                myCommand.Parameters.AddWithValue("username", StaticUser.StudentUser.username);
                myCommand.Parameters.AddWithValue("room", roomBox.Text);
                myCommand.Parameters.AddWithValue("time", timeBox.Text);
                //Executes SQL command. Returns the number of affected rows (unecessary for my purposes; a bi-product if you will).
                myCommand.ExecuteNonQuery();
            }
            catch
            {
                System.Windows.Forms.MessageBox.Show("Could not write new booking to database. This is likely because the database cannot be reached.", "Error");
                Program.AccessError = true;
            }
            myConnection.Close();
        }

这只是我试图解决我遇到的问题的众多方法之一。我也探讨过:

myCommand.Parameters.Add(new SqlCeParameter("username", StaticUser.StudentUser.username));

传递参数...和另一种让我现在逃避的方法(我认为使用“.Value = StaticUser.StudentUser.username”)。此外,我尝试使用命令的'using'语句来保存我自己关闭连接(我可能最终会使用一个使用'using'的解决方案)。最后(虽然这不是按时间顺序回忆),我试过:

SqlCeCommand myCommand = new SqlCeCommand("INSERT INTO bookings(username, room, time) VALUES(@username, @room, @time)", myConnection)

当然,再次无济于事。

要突出显示我遇到的问题的实际症状:代码似乎运行良好;单步执行我上面粘贴的完整方法表明没有错误被捕获(当然,消息框没有出现 - 我后来意识到踩到可以说是一个不必要的程序),而在我接触到的其他方法中,同样的事情发生了那么问题是表'预订'实际上并没有更新。

所以,我的问题,为什么?


我没有做明显的事情,请检查Debug文件夹以获取更新的数据库。

2 个答案:

答案 0 :(得分:1)

在bin / debug文件夹中查找数据库文件的副本。 在连接字符串中使用完整路径,最好不要在项目中包含sdf文件(或者至少将构建操作设置为None)

答案 1 :(得分:0)

我认为您没有为命令定义连接 试试

mycommand.connection = connectiostring;