我在 C# 解决方案中有一个 VS2012,有 4 个项目在 4 层结构(Presentation、BusinessLogic、DomainModel、DataAccess)中,并希望让用户可以选择在登录表单中选择数据库的文件路径,该表单位于表示层(它然后在 DataAccess 层的静态方法中创建与数据库的连接时使用)。并且该路径将被保存并在应用程序下次运行时使用。
更多的工作流程示例是:
- 用户启动应用程序并出现登录表单;
- 用户使用 FolderBrowserDialog 或 OpenDirectoryDialog 选择数据库的文件路径;
- 用户在应用程序上工作,然后结束它;
- 用户启动应用程序,数据库的文件路径是他之前选择的路径;
- 用户在应用程序上工作,然后结束它;
- 用户启动应用程序并选择另一个文件;
- 用户在应用程序上工作,然后结束它;
- 用户启动应用程序,数据库的文件路径是他之前选择的路径。
Codewise 我不想在我的代码周围为需要创建连接等的每个方法传递那个字符串(路径)。
那么关于如何将它直接保存在直接使用它的方法中的任何想法?如果不仅在用户想要更改它时,那么只是在启动应用程序时强制用户选择文件。
目前我正在做的是强制用户在他想要使用另一个数据库文件时在启动应用程序之前将他想要的文件放在具有特定名称的解决方案目录中。为此,我正在使用:
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;
}