0
SqlCeConnection sqlCnn = 
    new SqlCeConnection(Properties.Settings.Default.mainDBConnectionString);

SqlCeCommand sqlCmd = new SqlCeCommand(
    "INSERT INTO desktopItems (Location,Label) VALUES (@Location, @Label)", 
    sqlCnn);

sqlCnn.Open();
sqlCmd.Parameters.Add("@Location", openExe.FileName.ToString());
sqlCmd.Parameters.Add("@Label", openExe.SafeFileName.ToString());
sqlCmd.ExecuteNonQuery();

sqlCnn.Close();

私はこのコードを持っていますが、プログラムを実行するとデータベースが更新されません...

4

1 に答える 1

2

通常、このシナリオは、データベースの視覚化における単純なエラーが原因で発生します。
INSERT は期待どおりに機能しますが、間違ったディレクトリにあるデータベースを見て、挿入が成功したかどうかを確認します。

DATADIRECTORYアプリケーションで置換文字列を使用WinFormsするということは、デバッグ時にデータベースがBIN\DEBUGベース プロジェクト フォルダーのディレクトリにあると想定されることを意味します。プロジェクトでは、データベース ファイルがまたはに設定され
たプロパティでマークされているため、Visual Studio でこれが当てはまることを確認してください。 Copy To The Output DirectoryCopy AlwaysCopy If Newer

Visual Studio のデバッグ セッション内でコードを実行すると、ここで挿入が行われます。

次に、接続を使用して実行結果を確認しSERVER EXPLORERます。しかし、この接続はプロジェクト フォルダ内の元のデータベースを指しており、もちろん、新しいレコードは存在しません。

通常、プロジェクト フォルダー内のデータベースは、配置のために最新の状態に保たれ、正しいスキーマと初期データが保持されますが、デバッグ目的だけに挿入されるレコードはありません。

したがって、BIN\DEBUG 内のデータベースを指す SERVER EXPLORER に新しい接続を追加し、名前を変更して (「DEBUG-DB」など)、データベースのスキーマで何かを変更する必要がある場合に備えて元の接続を維持することができます。アプリケーションをリリースする前に。

于 2013-11-10T09:14:56.023 に答える