1

在我开始之前,我会让你知道,在我考虑自己发布问题之前,我已经尝试了以前问题和其他网站上已经建议的所有内容。碰巧的是,似乎没有任何效果,我对此感到厌烦。

作为一些背景信息,这是针对我的 Computing 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”)。此外,我尝试使用命令的“使用”语句来保存我自己关闭连接(我最终可能会使用使用“使用”的解决方案)。最后(尽管这不是按时间顺序排列的回忆),我尝试了:

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

再次,当然,无济于事。

为了突出我遇到的问题的实际症状:代码似乎运行良好;单步执行我在上面粘贴的完整方法表明没有发现任何错误(当然,消息框没有出现——我后来意识到单步执行可以说是一个不必要的过程),在我提到的其他方法中,同样的事情发生。那么,问题是表“bookings”实际上并没有被更新。

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


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

4

2 回答 2

1

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

于 2013-03-25T18:45:41.373 回答
0

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

mycommand.connection = connectiostring;
于 2013-03-25T18:48:42.643 回答