【发布时间】:2015-08-16 06:29:53
【问题描述】:
好的,所以我很迷茫。这是我为具有本地数据库的 Windows 编写的第一个真正的应用程序。 我在 VS2012 中使用本地数据库编写了一个 WPF 应用程序,该数据库将所有 CRUD 编写为存储过程。 该应用程序正在运行,因为我在 VS 中运行它。但是当我构建应用程序并安装它(在任何机器上)时,数据库是不可访问的。我感觉是连接字符串导致了这个问题。
首先我使用了这个连接字符串:
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename='D:\LH\Personalitytest win\DB.mdf';Integrated Security=True;Database=DB")
但是当我得到“错误:26 - 错误定位服务器/指定实例”时,我猜想连接的数据源不正确(尽管 AttachDbFilename 肯定不正确)。因此,我将连接字符串更改为:
SqlConnection conn = new SqlConnection(@"Server=(localdb)\v11.0;AttachDbFilename=" + AppDomain.CurrentDomain.BaseDirectory + "DB.mdf;Database=DB;Trusted_Connection=Yes;");
我得到一个错误,基本上说文件 DB.mdf 没有找到。
所以,我确保将 .mdf 和 .ldf 文件复制到安装目录/数据库。 但是在安装后,这两个文件都是只读的(即使这些文件在我开发时具有读/写权限)。我尝试在应用程序首次启动时更改文件权限(对于两个文件):
string path = AppDomain.CurrentDomain.BaseDirectory + @"Database\DB.mdf";
FileInfo file = new FileInfo(path);
file.IsReadOnly = false;
和
File.SetAttributes(path, FileAttributes.Normal);
和
FileAttributes attributes = File.GetAttributes(path);
attributes = attributes & ~FileAttributes.ReadOnly;
File.SetAttributes(path, attributes);
但是这些方法都不起作用。
我的问题基本上是,最终版本应该如何实现数据库?
【问题讨论】: