我将基于服务的数据库附加到我的Windows应用程序,并使用以下代码保存数据,它正常工作,但是当我关闭应用程序并再次打开时,我保存的数据会自动清除。
如何永久保存数据......
string c = Application.StartupPath + "\\Stock.mdf";
SqlConnection con = new SqlConnection(@"AttachDbFilename='"+c+"';Integrated Security=True;Connect Timeout=30;User Instance=True");
con.Open();
SqlCommand cmd = new SqlCommand("Insert into Codedetails values('TF','" + txt_productcode.Text + "','" + txt_productname.Text + "','" + txt_brandcode.Text + "','" + txt_brandname.Text + "')", con);
cmd.ExecuteNonQuery();
con.Close();
答案 0 :(得分:1)
首先,最好使用init目录而不是附加文件(通常的做法) 其次用于处理你的资源 第三,最好在存储过程中进行sql查询,该存储过程接受参数(数据库中的sql和vs2010中的C#; - )
string c = Application.StartupPath + "\\Stock.mdf";
string connectionString = @"AttachDbFilename='"+c+"';Integrated Security=True;Connect Timeout=30;User Instance=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
con.Open();
using (SqlCommand command = new SqlCommand(Insert into Codedetails values('TF','@productcode','@productname','@brandcode','@brandname'), con))
{
command.Parameters.Add(new SqlParameter("productcode", txt_productcode.Text));
command.Parameters.Add(new SqlParameter("productname", txt_productcode.Text));
command.Parameters.Add(new SqlParameter("brandcode", txt_brandcode.Text));
command.Parameters.Add(new SqlParameter("brandname", txt_brandname.Text));
command.ExecuteNonQuery();
}
}
答案 1 :(得分:1)
如果您在执行代码时没有收到错误,那么数据肯定会成功保存。因为如果您的数据未成功通过,那么您肯定会收到错误。
发生了什么事(这也发生在我身上):如果你为前VS运行IDE,那么每当你编译&然后发布多次,新发布的文件也包括SQL DB文件。每次发布时,都会发布一个新的DB副本,重写您对旧文件所做的任何更改。
当您在Database Connection Explorer中看到时,您将看到表的副本。这个包含所有内容的精确表格是每次发布的内容。
如果要保存更改,请执行以下操作:在发布新编译的文件之前,复制MDF&其他地方的LOG文件。然后点击发布。您将看到没有更改DB的旧表。关闭申请表。然后进入发布目录。现在粘贴MDF& LOG文件&取代他们的课程。最后点击这个文件夹的EXE。请勿再次单击释放,否则您的文件将再次被替换。