2

プロジェクトにデータベースを含めました(ルートに)。

接続文字列

Data Source=|DataDirectory|\TSM_DB.sdf;Password=xxx;Persist Security Info=True;Max Database Size=512

TSM_DB.sdfプロパティ:

  • ビルド アクション = コンテンツ
  • 出力ディレクトリにコピー = 新しい場合はコピー

データセットのプロパティ:

  • ビルド アクション = なし
  • 出力ディレクトリにコピー = コピーしない

私の問題:

データベースにデータを挿入しようとすると、プロジェクトに含まれているデータベースではなく、 Debug フォルダーにあるデータベースに挿入されます...

そして、それが(明らかに)私のselectステートメントがデータベース内のレコードを見つけられない理由です(私の接続文字列によると)...

クエリ (コード) は問題ないと思いますが、何らかの設定を行う必要があります。

この問題を解決するにはどうすればよいですか?

編集 :

選択コードの例 (動作: 接続文字列パスが絶対パスの場合)

Try
        Dim cnt_temp
        Dim SQLquery As String
        Dim myConString As String = My.Settings.TSM_DBConnectionString
        con.ConnectionString = myConString
        SQLquery = "SELECT * FROM tbl_outward"
        Dim DA As SqlCeDataAdapter, Ds As New DataSet, Dtb As New System.Data.DataTable
        DA = New SqlCeDataAdapter(SQLquery, con)
        DA.Fill(Ds)
        Dtb = Ds.Tables(0)
        cnt_temp = Dtb.Rows.Count
        MsgBox(cnt_temp)
        con.Close()
    Catch ex As Exception
        MsgBox("Error..!", MsgBoxStyle.Exclamation)
    End Try
4

1 に答える 1

3
データベースにデータを挿入しようとすると、プロジェクトに含まれているデータベースではなく、Debug フォルダーにあるデータベースに挿入されます...

これはまさにあなたがそうするように言ったことであり、あなたが望んでいることです。プロジェクト フォルダー内のデータベースは、ソース コードの一部です。コードをテストまたはデバッグする場合、変更されたデータは、ソース コードではなく、テストまたは一時的なデバッグ出力の一部です。

コードをテストするとき、テストでソース コードを上書きしますか? それがあなたのソースを破壊することはないことを願っています。プロジェクトを展開するとき、通常はソース コードを展開しません。同じことがデータにも当てはまります。プロジェクト内のデータはアプリケーションの一部であり、エンド ユーザー データではありません。アプリケーションをインストールすると、ソース データが にインストールされますDataDirectory。これはアプリケーションの一部であり、ユーザー データではありません。ユーザーはそれに書き込むことさえできない場合があります。

アプリケーションをアンインストールまたは更新すると、DataDirectoryがアンインストールまたは更新されます。ユーザーのデータに対してそれを行いたくありません。Microsoft Word を更新するたびに、ドライブ上のすべての Word ファイルが削除されますか? これは、Word がユーザー データをDataDirectory.

DataDirectoryアプリの私的使用のみを目的としています。ユーザーがこのデータを必要とする場合は、ユーザーが書き込み可能な、削除されない場所 ( Environment.SpecialFolder.ApplicationData.

この回答での詳細な説明。

于 2013-07-28T20:45:34.320 に答える