首页 > 解决方案 > SQL Server 插入问题。数据插入操作成功,但关闭应用程序重新打开后找不到数据

问题描述

我正在尝试编写一个带有附加数据库的 C# 应用程序。

所以我做了一个完美的插入操作,插入操作后我可以在我的数据网格视图中看到我的数据。但是关闭应用程序后,我看到我的数据表是空的。所以我重新打开了我的应用程序,数据网格视图也是空的。

这是我的示例代码:

插入

    private void button_create_Click(object sender, EventArgs e)
    {
        int id = 7;

        string ConStr = ConfigurationManager.ConnectionStrings["Doctor_s_Assistant.Properties.Settings.DocAssistDBConnectionString"].ConnectionString;
        SqlConnection offDBconnection = new SqlConnection(ConStr);

        offDBconnection.Open();

        string sqlCommand = "INSERT INTO Treatment_Template VALUES (@id, @t_name, @t_body, @t_advice)";

        SqlCommand sql = new SqlCommand(sqlCommand, offDBconnection);

        sql.Parameters.AddWithValue("@id",id);
        sql.Parameters.AddWithValue("@t_name", textBox_temp_name.Text);
        sql.Parameters.AddWithValue("@t_body", richTextBox_temp_body.Text);
        sql.Parameters.AddWithValue("@t_advice", richTextBox_temp_advice.Text);

        sql.ExecuteNonQuery();
        offDBconnection.Close();

        MessageBox.Show("New Template Created");
    }

预览数据:

    private void button_Load_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DocAssistDB.mdf;Integrated Security=True");
        con.Open();

        SqlCommand cmd = new SqlCommand("select * from Treatment_Template", con);

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);

        dataGridView1.DataSource = dt;

        con.Close();
    }

提前致谢

标签: c#sql-servervisual-studio

解决方案


您正在查看错误的数据库(您正在查看项目主文件夹中 csproj 旁边的 MDF 文件,但您的应用程序更改的 MDF 位于 BIN\DEBUG 或 BIN\RELEASE 子文件夹中 - MDF 被复制到那里在构建期间)

或者

对于您的 MDF 文件,您将“复制到输出文件夹”设置为始终复制,因此您的构建价格总是用项目文件夹中的新空白数据库覆盖您的 exe 正在编辑的 MDF(在 BIN\xxx 子文件夹中)


单击解决方案资源管理器中的 MDF,然后在属性窗口中将复制选项设置为 Copy If Newer。始终对项目文件夹中的 MDF 进行架构更改,而不是 bin 文件夹。请注意,当您进行架构更改等时,文件将变得更新并覆盖您的测试数据 - 如果您想保留程序编写的测试数据和其他时间,请先从 bin 文件夹中复制文件,然后更改架构,然后它将在构建期间再次复制出来


哦,顺便说一句;查看http://dapper-tutorial.net - 它可以节省您编写繁琐的数据访问代码的时间;您在帖子中编写的所有代码都可以减少到大约 4 行


推荐阅读