Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 使用数据源确定本地SQL Server CE数据库的路径_C#_.net_Sql Server Ce - Fatal编程技术网

C# 使用数据源确定本地SQL Server CE数据库的路径

C# 使用数据源确定本地SQL Server CE数据库的路径,c#,.net,sql-server-ce,C#,.net,Sql Server Ce,我已经使用MSDN站点上的这些说明设置了数据库。这包括首先创建数据库,然后将其添加到项目中 然后在数据源中,当打开数据库时,我使用了类似“data source=|applicationin data |+filename.sdf”的东西,但是当使用这种方法时,我会启动应用程序,然后将一些数据加载到它上,但是在我在项目外部创建的本地数据库中,我看不到数据(如我链接到的教程中所述)只有当我硬编码到第一次创建数据库时创建的.sdf文件时,这才有效 我似乎找不到任何关于如何使这成为一个相对路径的信息,

我已经使用MSDN站点上的这些说明设置了数据库。这包括首先创建数据库,然后将其添加到项目中

然后在数据源中,当打开数据库时,我使用了类似“data source=|applicationin data |+filename.sdf”的东西,但是当使用这种方法时,我会启动应用程序,然后将一些数据加载到它上,但是在我在项目外部创建的本地数据库中,我看不到数据(如我链接到的教程中所述)只有当我硬编码到第一次创建数据库时创建的.sdf文件时,这才有效


我似乎找不到任何关于如何使这成为一个相对路径的信息,在这两个构建之间,数据将保留在数据库中。

当您构建解决方案时,您的数据库将复制到bin目录

调试时,使用的是该副本,而不是项目中的副本

这是故意的。这是正确的

你应该这样做:

#if DEBUG
    public static readonly string ConnectionString =
        string.Format(@"Data Source=..\..\DbTest\{0}; password='{1}'", DbFileName, DbPassword);
#else
    public static readonly string ConnectionString =
        string.Format(@"Data Source=|DataDirectory|\{0}; password='{1}'", DbFileName, DbPassword);
#endif
请记住使用两种不同的dbs:

一个用于测试
无数据发布应用程序的一个

是clickone应用程序还是winform?@giammin它是windows窗体应用程序请向我们显示打开数据库的代码。向我们展示“类似”的代码是没有帮助的。是的,我想是的,但它不会持续到下一个版本,所以我丢失了我输入的所有数据it@TolgaE您应该像我的示例中那样处理连接字符串谢谢,它现在可以工作了,它确实可以在构建过程中保持。我只需要添加一个额外的..\以向上移动另一个目录,因为“DbTest”是我的ExecutableAll之外的另一个项目,还有一个不相关的问题(我对.NET相当陌生)您将在哪里存储这样的常量?@TolgaE我通常创建一个名为constants的类,其中包含所有常量,我的业务/域库中的只读属性,或者如果它们是某种配置常量,我将它们放在xml或.config文件中