如何将数据作为基于服务的数据库附加到数据库时如何将数据保存到数据库?

时间:2012-09-29 06:13:50

标签: c# sql-server database

我将基于服务的数据库附加到我的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();

2 个答案:

答案 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。请勿再次单击释放,否则您的文件将再次被替换。