0

質問を簡単に作成するための簡単な例を作成します。したがって、私の c# プロジェクトでは、記事を含む mdf データベースを作成します。次に、プログラムでデータベースに接続し、テーブル アーティクルから値を読み取ります。結果は得られますが、最新ではありません。結果が 1 つある場合は、この結果が表示されます。次に、記事テーブルに移動して新しい記事を 1 つ追加し、プログラムを再度実行します。この場合、プログラムは最初の記事のみを表示します。しかし、「ソリューションをビルド」すると、それらすべてが見つかります。

私がしなければならないこと?そのプログラムの起動時に最新の結果が得られることを願っています。

SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");

try
{
     cn.Open();

     string sqlQuery = "SELECT * FROM Articles";
     SqlCommand sqlCommand = new SqlCommand(sqlQuery, cn);
     SqlDataReader sqlDataRead = sqlCommand.ExecuteReader();

     while (sqlDataRead.Read())
     {
         MessageBox.Show(Convert.ToString(sqlDataRead["ArticleLabel"]));
     }

     sqlDataRead.Close();
     sqlDataRead.Dispose();
     sqlCommand.Cancel();

     cn.Close();
 }
 catch (Exception) { MessageBox.Show("Database error!"); Application.Exit(); }
4

1 に答える 1

0

MDF ファイルのプロパティが にCopy To Output Directory設定されてCopy Alwaysいる場合、アプリケーションをビルドするたびに、データベース ファイルの新しいコピーがプロジェクト ディレクトリから出力ディレクトリ (BIN\DEBUGまたはBIN\RELEASE) にコピーされます。
もちろん、これはプログラムの以前の実行で行った変更を破棄します

プロパティを次のように変更しますCopy if Newer

また、サーバー マネージャーのウィンドウに表示される内容に惑わされないでください。そこでの接続は、出力ディレクトリ内のデータベースを指すことはできませんでしたが、何も書き込んでいないプロジェクト ディレクトリ内のデータベースを指すことができませんでした。

于 2013-03-30T10:52:35.247 に答える