Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改数据库的默认路径或更改| DataDirectory |定义_C#_Sql Server_Database - Fatal编程技术网

C# 更改数据库的默认路径或更改| DataDirectory |定义

C# 更改数据库的默认路径或更改| DataDirectory |定义,c#,sql-server,database,C#,Sql Server,Database,首先,我想向你道歉,因为我想打扰你所有愚蠢的问题,但我真的有个问题 我想知道我是否可以更改C#安装数据库的路径(大家都知道,必须单击外接程序解决方案资源管理器,然后转到服务数据库,这样数据库将自动创建到项目文件中,我想更改此自动位置),有什么方法可以做到这一点吗 其次,如果我无法更改自动添加数据库的路径,我希望更改|DataDirectory |的操作方式。我想将在project/bin/Debug中运行数据库的选项更改为自动将程序运行到项目文件中。通常最好保持默认状态。因此,您的连接字符串存储

首先,我想向你道歉,因为我想打扰你所有愚蠢的问题,但我真的有个问题

我想知道我是否可以更改C#安装数据库的路径(大家都知道,必须单击外接程序解决方案资源管理器,然后转到服务数据库,这样数据库将自动创建到项目文件中,我想更改此自动位置),有什么方法可以做到这一点吗


其次,如果我无法更改自动添加数据库的路径,我希望更改
|DataDirectory |
的操作方式。我想将在
project/bin/Debug
中运行数据库的选项更改为自动将程序运行到项目文件中。

通常最好保持默认状态。因此,您的连接字符串存储在app.config文件(或web应用的web.config文件)中。这样,当您将应用程序部署到客户时,可以很容易地调整配置

如果该路径存储在web.config或app.config中,并且您的应用程序在运行时读取该路径,则您可以(手动或使用设置工具)在客户位置编辑该路径以匹配其约束,并且程序将使用新配置。DataDirectory替换字符串是一种折衷方案,可以缓解设置重新配置问题;如果您计划通过代码更改它,那么您将面临同样的问题,因为您仍然需要在某个地方读取客户配置

无论如何,从代码中更改| DataDirectory |解析的位置非常容易

AppDomain.CurrentDomain.SetData("DataDirectory", your_path_to_a_data_folder);
顺便说一下,marc_的建议很好。如果已安装Sql Server Express(并且客户计算机上也需要它),则可以使用管理工具(Sql Server Management Studio)将MDF文件添加到Sql Server Express处理的数据库中。这为数据库提供了一个逻辑名称(不是一个路径不断变化的文件名),并且在连接字符串中使用该逻辑名称,而不是
AttachDbFileName

DataSource=.\SQLEXPRESS;Database=myDatabaseName; ....;
作为替代方案,如果您不需要从客户LAN上的多台PC共享访问数据库,则可以查看Sql Server Express的LocalDB选项。此选项允许您不将Sql Server Express安装到客户PC,而是将数据库服务作为您自己应用程序的本地dll启动


请参见

您可以将连接字符串更改为指向项目文件中的连接字符串,而不是
DataDirectory
。您应该将SQL Server数据库放在它所属的服务器上,然后通过定义服务器和(逻辑)来使用它连接字符串中的数据库名称-不要在文件系统中摆弄
.mdf
文件-让SQL Server为您处理这些…我不理解您想说的@marc_s,但所有这些“混乱”的要点是我不会在我的PC上工作,除了在那台电脑上安装默认设置/程序外,我不可能安装其他任何东西。而且我不能100%确定那台电脑是否安装了SQL Server Express。这就是为什么我对这件事非常紧张的原因。如果要使用
.mdf
文件,那么必须安装SQL Server Express。。。。。既然它已经安装好了,为什么不正确使用它呢?因为如果我使用这个连接字符串:“SqlConnection con=new SqlConnection(@”Data Source=。\SQLEXPRESS;AttachDbFilename=Database1.mdf;Integrated Security=True;User Instance=True”);”我收到以下错误:尝试为文件Database1.mdf附加自动命名的数据库失败。存在同名数据库,或无法打开指定的文件,或该文件位于UNC share.Hmmm.上。。我明白你想说什么,但假设我会在我的电脑上这样做,路径是C:\Users\rBcollo\Desktop\Project\。如果我在其他电脑上运行它(显然会有另一个用户名),我将无法正常运行它,对吗?好的。我有点完成了所有事情。但现在我遇到了这个错误:“无法打开数据库”Database1.mdf“由登录请求。登录失败。用户'rBcollo PC\rBcollo'登录失败。“在连接数据库时,我没有使用任何用户名或密码。”