ExecuteNonQuery正在运行,但更改未保存

时间:2017-05-17 17:28:49

标签: c# sql executenonquery

这是我正在处理的代码;

 public partial class Form2 : Form
{
    SqlConnection sc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True");
    SqlDataAdapter sda;
    SqlCommand command;
    SqlCommand commands;
    public Form2()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
        Form1 f1 = new Form1();
        f1.Show();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        command = new SqlCommand(@"SELECT * FROM [Table] WHERE email='" + textBox4.Text + "'", sc);
        sda = new SqlDataAdapter(command);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        int i = ds.Tables[0].Rows.Count;
        if (i == 1)

            MessageBox.Show("Email Already Taken");
        else
        {
            sc.Open();
            command = new SqlCommand("INSERT INTO [Table](name,surname,yearofbirth,adress_home_city,adress_home_block,adress_home_street,adress_work_city,adress_work_block,adress_work_street,email,password) VALUES('"+textBox1.Text+"','"+textBox2.Text+ "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox7.Text + "','" + textBox10.Text + "','" + textBox11.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','" + textBox6.Text + "') ", sc);

            command.ExecuteNonQuery();
            sc.Close();
            MessageBox.Show("Success");

        }

它在我调试它时工作,它是一个注册表格,我可以用我在这个表单中提供的信息登录。

但是当关闭时,我执行的这个插入命令并没有保存在我的数据库中。

//其他信息;

当以注册形式,我收到成功消息,如果我再次尝试相同的信息,我收到的电子邮件已被采取消息

1 个答案:

答案 0 :(得分:0)

问题是因为您的mdf文件在重建时被替换为空白文件,即每次重建应用程序时都会将mdf文件复制到调试文件夹,从而删除之前插入的所有数据。

解决方案

  1. 不要在解决方案中包含mdf文件。
  2. 在连接字符串中提供完整路径(如AttachDbFilename = C:\ Database1.mdf;)或mdf文件的相对路径
  3. SqlConnection sc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Database1.mdf;Integrated Security=True");

    1. 如果要将mdf文件包含到解决方案中,请将“复制到输出目录”属性更改为“不要复制”
    2. 使用本地MSSQL服务器实例中的数据库,而不是在可能的情况下指向mdf文件(MS SQLExpress是免费的)。
    3. 只有从visual studio启动应用程序才会出现此问题,如果您直接从debug / release文件夹中多次启动应用程序,应用程序将正常运行,因为它不会被重建,因此不会替换mdf文件。