【发布时间】:2018-03-06 08:27:08
【问题描述】:
创建本地数据库文件然后将应用程序连接到它的正确方法是什么?即使您更改项目文件夹的位置,我也希望它能够工作。
知道我要做的是:项目->添加新项目->基于服务的数据库,然后创建一个,然后转到数据->添加新数据源,添加创建的数据库并获取连接字符串.
好的,一切都好,我可以按照我的意愿连接到它,但是当我关闭应用程序时,我的所有数据都会从数据库中删除(并非总是如此)。
例如这段代码:
SqlConnection c = new SqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True");
c.Open();
SqlCommand cmd;
cmd = new SqlCommand("CREATE TABLE Persons (id int primary key, nume char(20), age int)");
cmd.ExecuteNonQuery();
cmd = new SqlCommand("INSERT INTO Persons VALUES (@id, @name, @age)", c);
cmd.Parameters.AddWithValue("@id", 1);
cmd.Parameters.AddWithValue("@name", "Catalin");
cmd.Parameters.AddWithValue("@age", 20);
cmd.ExecuteNonQuery();
我第一次运行它来创建表并向其中添加一个项目,然后,如果我第二次运行它而不使用 sql 命令来创建表 people,它告诉我没有 Persons 对象,但是如果我第二次使用相同的代码运行该项目,它告诉我已经有一个 Persons 对象...
我正在使用 Visual C# Express Edition 2010。
【问题讨论】:
-
您是否通过单击“开始调试”来运行您的程序,并且您的 .mdf 是否在 Bin 文件夹中?如果是,可能是每次构建/运行程序时都会覆盖您的 .mdf。
-
marc_s answer 是完全正确的。另外我建议使用
usingstatement自动处理你的连接和命令,最好使用Add方法指定参数类型和它的大小而不是AddWithValue,因为it might generate unexpected results sometimes。
标签: c# database sql-server-express