21877


環境  
Visual Studio Express for Desktop  
SQL Server Express 2014  
C# Windows Form アプリケーション

にて開発を行っております。  
レコードの更新を行おうとした所エラーは発生しないものの、レコードの更新も行われない状態となりました。

以下がコードとなります(例外は通っていないためcatchは省略しています)  
また、同様のコネクションを作成し、INSERT文では同様にレコードの追加が行われませんでしたが、SELECT文を発行するとそちらに関しては正常に結果が取得できました。  
問題点が特定出来ないため何かお気づきの点があればよろしくお願いいたします。

[code]

    con.ConnectionString = @"Server=.\SQLEXPRESS;"
                           +       @"AttachDbFilename=|DataDirectory|\test.mdf;"
                           + "Database=dbo;"
                           + "integrated security=true";
    con.Open();
    try
    {
        SqlCommand command = new SqlCommand("UPDATE table_name SET foo = 'bar' WHERE id = 1 ", con);
        command.ExecuteNonQuery();
    
    }
    finally
    {
        con.Close();
    }
    
[/code]


CC BY-SA 3.0
2016-02-09T03:39:54.020
21876
2016-02-09T04:33:49.237
2016-02-09T03:44:33.427
10753
10753
question
c# visual-studio sql-server
System.Data.SqlClientを使用した更新処理が行えない

[code]

    @"AttachDbFilename=|DataDirectory|\test.mdf;"
    
[/code]

とのことですが、ビルドする度に `test.mdf` を上書きしていませんか？

もしくは実際に書き込みを行った `test.mdf` と別のディレクトリに保存されている `test.mdf`
に対して更新されたかどうかを確認していませんか？ 前者は`|DataDirectory|`ですので既定では実行ファイルと同じディレクトリです。

* * *

ソリューションエクスプローラーで`test.mdf`のプロパティを確認すると分かりますが、チュートリアルの方法では既定で「常にコピーする」になっており、プロジェクトディレクトリにある`test.mdf`がビルド出力先（実行ファイルと同じディレクトリ）へコピーされます。

なお、プログラムは上記の通りコピー先（実行ファイルと同じディレクトリ）の`test.mdf`を参照しますが、同チュートリアルのデータベースエクスプローラーで接続しているのはコピー元（プロジェクトディレクトリ）の`test.mdf`です。つまり、上記指摘の両方の間違いを犯しています。


CC BY-SA 3.0
2016-02-09T03:46:23.210
21877
2016-02-09T04:33:49.237
2016-02-09T04:33:49.237
4236
4236
21876
answer