在开始之前,我会告诉您,在我考虑自己发布问题之前,我已经尝试了之前问题和其他网站上已经提出的所有内容。事实上,似乎没有任何效果,我只是厌倦了这一点。
作为一些背景信息,这是针对我的计算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文件夹以获取更新的数据库。
答案 0 :(得分:1)
在bin / debug文件夹中查找数据库文件的副本。 在连接字符串中使用完整路径,最好不要在项目中包含sdf文件(或者至少将构建操作设置为None)
答案 1 :(得分:0)
我认为您没有为命令定义连接 试试
mycommand.connection = connectiostring;