【发布时间】:2013-11-13 11:09:56
【问题描述】:
我有一个 VS2012 的 C# 解决方案,其中 4 个项目采用 4 层结构(Presentation、BusinessLogic、DomainModel、DataAccess),并希望让用户可以在登录表单中选择数据库的文件路径,该表单位于演示文稿中层(然后在数据访问层中以静态方法创建与数据库的连接时使用它)。并且该路径将被保存并在应用程序下次运行时使用。
更多的工作流程示例是:
- 用户启动应用程序并出现登录表单;
- 用户使用 FolderBrowserDialog 选择数据库的文件路径或 打开目录对话框;
- 用户在应用程序上工作然后结束它;
- 用户启动应用程序和数据库的文件路径是一个 他以前选过;
- 用户在应用程序上工作然后结束它;
- 用户启动应用程序并选择另一个文件;
- 用户在应用程序上工作然后结束它;
- 用户启动应用程序和数据库的文件路径是一个 他之前选的。
在代码方面,我不想为需要创建连接等的每个方法在我的代码周围传递该字符串(路径)。
那么关于如何将它直接保存在直接使用它的方法中的任何想法?如果不仅在用户想要更改它时,那么只是在启动应用程序时强制用户选择文件。
目前我正在做的是强制用户在他想要使用另一个数据库文件时在启动应用程序之前将他想要的文件放在具有特定名称的解决方案目录中。为此,我正在使用:
public static string path;
public static OleDbConnection createConnection()
{
path = DirProject() + "\\Calibrações Equipamentos ULSM.accdb";
OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
builder["Provider"] = "Microsoft.ACE.OLEDB.12.0";
builder["Data Source"] = path;
return new OleDbConnection(builder.ConnectionString);
}
private static string DirProject()
{
string DirDebug = System.IO.Directory.GetCurrentDirectory();
string DirProject = DirDebug;
for (int counter_slash = 0; counter_slash < 3; counter_slash++)
{
DirProject = DirProject.Substring(0, DirProject.LastIndexOf(@"\"));
}
return DirProject;
}
【问题讨论】: