0

VB.NET 数据临时保存在 access 数据库中,当我终止应用程序时,数据会自动从数据库中删除。这是代码: -

con1.Open()
Dim da As New OleDbDataAdapter
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = con1
cmd.CommandText = "INSERT INTO Journal(UsedAccount,Effect,Purpose,EffectedAccount,Amount,Datex) VALUES( '" & Me.ComboBox1.SelectedItem & "','" & effect & "','" & Me.TextBox1.Text & "','" & Me.ComboBox3.SelectedItem & "','" & Me.TextBox2.Text & "','" & Me.DateTimePicker1.Value & "')"
cmd.ExecuteNonQuery()
con1.Close()

我的代码做错了什么?如何防止数据被自动删除?

4

1 回答 1

3

您的项目文件中可能包含您的 MDB (ACCDB) 文件。
如果您检查与此项目文件关联的属性,您会发现一个名为

Copy to Output Directory设置为Copy Always.

您的连接字符串还包含快捷方式

Data Source = "|DataDirectory|\yourdb.mdb"

如果这个场景是正确的,那么

  • 您启动您的应用程序,MDB 文件从原始位置复制到 BIN\DEBUG 目录。
  • 您在那里插入数据而不会出错。
  • 您停止调试会话以修复错误或其他问题
  • 您重新启动应用程序,您的数据库的新副本(但为空)将再次复制到输出目录中。

修复它,将属性设置为“从不复制”或将连接字符串更改为指向固定位置。

附带说明:切勿使用字符串连接来构建您的 sql 命令。这将是一个巨大的安全风险(Sql 注入攻击)和众多解析问题的根源(日期格式、带单引号的字符串、非整数的小数分隔符)。始终使用参数化查询。

于 2013-01-05T10:07:59.400 回答