我在客户端计算机上运行Windows窗体应用程序时出错。我有一个名为LoginData.mdf的数据库,它是一个LocalDB,我想将其附加到我发布的项目中。这是我的连接字符串
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + Globals.login_DB_path + @"\" + Globals.login_Db_name + ";Integrated Security=True;Connect Timeout=30;");
其中
public static class Globals
{
public static String login_DB_path = "|DataDirectory|";
//Path.GetFullPath(Environment.CurrentDirectory);
public static String login_Db_name = "Logindata.mdf";
}
我已经看过这个线程:publish a project with local database
但是当我在客户端计算机上安装整个文件夹并进行设置时,从创建的应用文件夹中打开我的单击一次应用后,如下所示:
-Application Files
Bombardier Manager_1_0_0_1
Bombardier Manager.exe.config.deploy
Bombardier Manager: click once app
.... the .mdf and log.ldf are also her
-Bombardier Manager: click once app
-setup
我首先在客户端计算机上设置了文件,并根据先决条件在客户端计算机上下载了SQL Server Express本地数据库和.NET框架,同时还在“应用程序文件”部分中添加了“数据文件”。
设置后,我双击了主文件夹中的单击一次应用程序。它运行了,但是给了我一个错误,那就是它无法访问sql数据库。已包含在应用程序中。同样后来,当我尝试从 Bombardier Manager_1_0_0_1 文件夹运行一次单击应用程序时,它说我无法从那里运行它,因为它是从其他地方安装的。我不知道该怎么办,因为我按照上面给定链接中的所有步骤进行操作,但是它仍然给我与无法访问SQLDatabase相同的错误。
任何帮助将不胜感激。
答案 0 :(得分:0)
答案 1 :(得分:0)
我不知道这是否有帮助,但是例如,您是否尝试过将.mdf放在与程序相同的目录中。然后只需从设置Like this
中的.config文件创建连接字符串即可。这对我有用,使conn与LocalDB变得简单。
答案 2 :(得分:0)
我和HelpSeekerandGiver一样挣扎。这就是我解决问题的方式(Microsoft并没有使之变得简单):
通过在解决方案资源管理器中右键单击项目文件来设置localDB,选择Add -> new items->visual C# items->Data->Service-based Database
,找到设置数据表的说明。
验证是否在每个数据库表的可执行文件所在的文件夹中创建了一个.mdf文件。
检查是否将.mdf文件作为必备条件包含在发布设置页面中。
我在开发环境中使用了SQL Server Express 2017。所以我也必须在客户端系统上安装2017版本。但是,请勿安装服务器,而应安装localDB。这很棘手。请遵循this page上的说明。
最后,通过OneClick在客户端计算机上安装后,需要在已安装目录中而不是在桌面上启动快捷方式来启动可执行文件。该目录非常深,链接为c:-> users->您的文件夹-> AppData(这是一个隐藏文件夹,您需要更改资源管理器设置才能显示它)-> local-> Apps-> 2.0->。 ..