0

我创建了简单的示例来更轻松地创建问题。所以在我的 c# 项目中,我创建了一个带有文章的 mdf 数据库。然后我在我的程序中连接数据库并从表格文章中读取值。它给了我结果,但不是最新的。如果我有一个结果,它会告诉我这个。然后我进入文章表添加一篇新文章并再次运行程序,在这种情况下程序只显示第一个。但是,如果我“构建解决方案”,它会找到所有这些。

我必须做什么?我希望,该程序将在启动时获得最新结果。

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\DEBUGBIN\RELEASE)。
当然,这会破坏您在之前的程序运行中所做的任何更改

将属性更改为Copy if Newer

此外,不要被您在服务器管理器 Windows 中看到的内容所迷惑。那里的连接不能指向输出目录中的数据库,而是指向项目目录中您不写任何东西的数据库。

于 2013-03-30T10:52:35.247 回答