0

挿入データをテーブルに保存するために、小さなアプリケーションを実行しました....

アプリケーションを閉じた後、アプリケーションはデータを保存していません..

コードのどこが間違っているのか教えてください。

Imports System.Data
Imports System.Data.SqlServerCe


Public Class Form1

Public connstring As New String("Data Source=|DataDirectory|\test_db.sdf")
Public sqlconn As New SqlCeConnection(connstring)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim name As New String("jaifar")
    Dim myCommand As New SqlCeCommand("Insert Into table1 (id) Values('" + name + "')", sqlconn)
    If sqlconn.State = Data.ConnectionState.Closed Then sqlconn.Open()
    myCommand.ExecuteNonQuery()
    Me.Table1TableAdapter.Fill(Me.Test_dbDataSet1.table1)
End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    sqlconn.Close()
    sqlconn = Nothing
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'Test_dbDataSet1.table1' table. You can move, or remove it, as needed.
    Me.Table1TableAdapter.Fill(Me.Test_dbDataSet1.table1)

 End Sub
End Class
4

2 に答える 2

0

これを回避するにはいくつかの方法があります。

  1. ソリューション エクスプローラー ウィンドウでローカル データベース ファイルを選択すると、[プロパティ] ウィンドウに [出力にコピー] というプロパティが表示されます。デフォルトでは、「常にコピー」に設定されています。これは、ビルドごとに、プロジェクト フォルダー内のデータ ファイルが出力フォルダーにコピーされ、既存のデータ ファイルがあればそれを上書きすることを意味します。このプロパティを [コピーしない] に設定し、データ ファイルのコピーを出力フォルダーに手動で配置できます。このようにして、後続のビルドでは、プロジェクト システムはデータファイルを出力フォルダーに残し、プロジェクトのファイルで上書きしようとしません。欠点は、まだ 2 つのコピーがあることです。そのため、アプリを使用してデータベース ファイルを変更した後、プロジェクトでこれらの変更を行いたい場合は、手動でプロジェクトにコピーする必要があり、その逆も同様です。

  2. プロジェクトの外にデータ ファイルを残して、Database Explorer で接続を作成できます。IDE がファイルをプロジェクトに取り込むように求めてきたら、いいえと答えます。この方法では、設計時と実行時の両方で同じデータ ファイルが使用されますが、欠点は、接続文字列のパスがハード コーディングされるため、プロジェクトの共有とアプリの展開が難しくなることです。 . アプリをデプロイする前に、設定のフル パスを相対パスに置き換えてください。

ソース: https://arnulfo.wordpress.com/2007/07/21/visual-studio-and-local-databases/

于 2015-02-07T15:45:39.777 に答える
-1

myCommand.ExecuteNonQuery()

それから書く

sqlconn.Close()

書き込みを実行した場合は、閉じた方がよいでしょう。データベースでデータセットに保存することは同じではないことを知っておく必要があります。データセットはプログラム内で一時的なものであり、データベースでまだ変更されていないことを意味します。

そして、私たちの + 名前 + 値はどこですか?? 同様に、mycommand.addwithvalue("名前"、値の場所)

于 2013-03-18T06:35:27.383 に答える