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 に答える