这是我正在处理的代码;
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");
}
它在我调试它时工作,它是一个注册表格,我可以用我在这个表单中提供的信息登录。
但是当关闭时,我执行的这个插入命令并没有保存在我的数据库中。
//其他信息;
当以注册形式,我收到成功消息,如果我再次尝试相同的信息,我收到的电子邮件已被采取消息
答案 0 :(得分:0)
问题是因为您的mdf文件在重建时被替换为空白文件,即每次重建应用程序时都会将mdf文件复制到调试文件夹,从而删除之前插入的所有数据。
解决方案
SqlConnection sc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Database1.mdf;Integrated Security=True");
只有从visual studio启动应用程序才会出现此问题,如果您直接从debug / release文件夹中多次启动应用程序,应用程序将正常运行,因为它不会被重建,因此不会替换mdf文件。