【发布时间】:2019-08-01 11:47:14
【问题描述】:
我已经使用 基于服务的数据库 选项创建了一个基本的 Windows 窗体应用程序,因此当我将它部署到另一台电脑上时,它不需要在那里安装 sql server。
我在项目中添加了一个 LINQ-to-SQL 类,here 是我的完整代码
这里是 app.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="_16Sep18_databaseAppWithSetup_.Properties.Settings.WrestlersConnectionString"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Wrestlers.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
问题是当我每次运行我的程序时,以前存储的数据不再在数据库中,但是当我输入数据并执行插入、删除、更新等操作时,它可以工作并且数据也显示在 datagridview 中,但是一旦我关闭应用程序,所有这些数据都消失了。 为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
您如何确定没有上传数据库?我怀疑您正在使用 SQL Server Management Studio 来检查数据是否未更改。问题在于您的连接字符串。您的程序正在修改不同的数据库。切勿在连接字符串中使用 mdf 文件名。它不是必需的。数据库附加了文件并且是文件的所有者。然后在连接字符串中使用 Database=myDataBase 来指定您正在使用的服务器上的哪个数据库。您可以通过右键单击数据库并检查属性来检查服务器正在使用的 mdf 文件。
-
@jdweng 你能在 cmets 或答案中写下整个连接字符串吗...我不明白你想说什么 在连接字符串中使用 Database=myDataBase?
-
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Database=myDataBase;Integrated Security=True" providerName="System.Data.SqlClient" /> 使用实际数据库名称。
-
@jdweng 我的数据库名称是 Wrestlers.mdf 所以我尝试了 connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Database=Wrestlers.mdf;Integrated Security=True" providerName="System.Data. SqlClient" />
-
但我收到错误 System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的未处理异常和其他信息:无法打开登录请求的数据库“Wrestlers.mdf”。登录失败
标签: c# linq-to-sql localdb