2

SQL CE データベースへの挿入に問題があります。

私はいくつかのコードを書いた後、DB が必要になったときに、projected を右クリックし、新しい項目Local Databaseを追加しました。その後、データモデルを選択するように提案されました。

これにより、左側のサーバー エクスプローラーの下に DB が作成され、右側のソリューション エクスプローラーに同じ .sdf ファイルが表示されます。

アプリケーションを起動し、挿入クエリを実行すると、挿入が成功したという出力が表示されます。root/bin/Debug/db.sdf の下の .sdf ファイルが変更されたことがわかります。アプリケーションを閉じますが、元のデータベースが見つかりました/root/db.sdf にあります。サーバー エクスプローラーから DB にクエリを実行すると、変更や挿入された行が表示されません。私が使用するコードは次のとおりです。

最初に、サーバーのデータ ソース オプションを試してみましたが、コメントされていないものはすべてうまくいきませんでした。

            //String connectString = @"Data Source=" + '"' + @"C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\myDB.sdf;" + '"';
            //String connectString = "Data Source:=" + '"' + @"C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\my.sdf" + '"';
            //String connectString = "Data Source:=C:\\Users\\Alex\\Documents\\Visual Studio 2012\\Projects\\my\\my\\my.sdf";
            //String connectString =@"Data Source:=C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\myDB.sdf";
            String connectString = "Data Source=myDB.sdf";
            using (SqlCeConnection connection = new SqlCeConnection(connectString))
            {
                connection.Open();
                String query = "Insert into items (id, title)  VALUES ('" + ID + "', '" + title + "');                  
                SqlCeCommand cmd = new SqlCeCommand(string.Format(query), connection);
                int result = cmd.ExecuteNonQuery();  
            }

アプリケーションを閉じた後、項目テーブルを右クリックして「テーブルデータを表示」します-挿入はありません。私は何を間違っていますか?

4

2 に答える 2

1

Visual Studio は、元のソリューション アイテムのコピーをbin/Debugサブフォルダーに作成している可能性があります (ビルドごとに)。コードの実行中に元のファイルが変更されることはなく、次にアプリケーションをビルドするときに変更が破棄される可能性があります。

したがって、ユースケースに応じて、データを表示するために bin/Debug でデータベースを開くか、プロジェクト/ソリューションのルートにあるものを使用するように接続文字列を変更する必要があります。

于 2013-03-17T12:28:57.310 に答える
1

bin/debug フォルダーにデータベースのコピーがあり、正しいデータが含まれています。混乱を避けるために、接続文字列にデータベース ファイルへのフル パスを入力してください。

于 2013-03-17T12:28:59.773 に答える