【问题标题】:Can't save data in database help!无法在数据库帮助中保存数据!
【发布时间】:2010-06-18 17:33:40
【问题描述】:

我有一个寡妇表格应用程序,我无法将应用程序(文本框)中的数据保存在数据库中(ms 访问)。存储的数据可以在应用程序中看到,但是如果我打开数据库,它就不存在了......所以如果我打开数据库并重新启动表单应用程序,我看不到之前插入的数据。

string conString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "数据源=save.mdb"; OleDbConnection empConnection = new OleDbConnection(conString); 字符串 insertStatement = "INSERT INTO zivila" + "([纳粹]) " +“价值观(@naziv)”; OleDbCommand insertCommand = new OleDbCommand(insertStatement, empConnection); insertCommand.Parameters.Add("@naziv", OleDbType.Char).Value = textBox1.Text; 尝试 { empConnection.Open(); int count = insertCommand.ExecuteNonQuery(); empConnection.Close(); } 捕捉(OleDbException ex) { MessageBox.Show(ex.Message); } 最后 { 文本框1.清除();

【问题讨论】:

  • 哇,奇怪。如果原作者在特定时间范围内进行编辑,则编辑不会显示为编辑?
  • 数据库文件名中没有路径。这意味着数据库在当前目录中。但是当你运行你的程序时,当前目录是什么?在 VS 内的调试模式下,这是 BIN\DEBUG。更新的数据库在那里。

标签: c# database winforms ms-access


【解决方案1】:

我认为您缺少方括号 ]

【讨论】:

  • 我删掉了一些代码,所以...编译器没有显示任何错误
  • @Simon 编译器不会显示任何错误。这是 SQL 的问题。尽管您认为它会在执行时引发异常...
  • 我说我用的数据可以用好吗?因此,如果我没有括号,我会在保存数据之前出现错误。我编辑了问题(添加了 ] 所以请不要理会那个括号。这是我编辑代码的错误,因为我不想'将整个代码放在不需要的地方。我只想知道为什么不需要它(数据)保存到我的数据库。如果我使用整个路径作为数据源,那么数据将被存储,但我必须重新启动应用程序以使其可用,并且每次移动时我都必须更改数据源的路径应用程序...
  • 哇,愤怒的人!这个问题可能会让你的笼子嘎嘎作响,但这种态度不会让任何人走到任何地方。请参阅我对另一个建议的回答 - 访问是一个棘手的野兽。
【解决方案2】:

OleDb 似乎不支持命名参数。

来自here

OLE DB.NET Framework 数据提供程序使用标有问号 (?) 的位置参数,而不是命名参数。

这可能会得到你想要的:

string insertStatement = "INSERT INTO zivila ([naziv]) VALUES (?)";
// snip
insertCommand.Parameters.Add("@p1", OleDbType.Char, 255).Value = textBox1.Text;

【讨论】:

    【解决方案3】:

    确保您正在查看正确的数据库:如果您的数据库是您解决方案的一部分,它将被复制到 bin 文件夹,而 build 文件夹中的数据库将被更新。

    我同意 @tomfanning 的观点,即 Access 不支持命名参数,而应使用问号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多