1

我目前有一个包含许多项目文件夹的目录,每个项目文件夹都包含一个 MysqlCE 数据库。这些数据库都有相同的表;除了数据之外,它们是相同的。我的目标是显示来自根目录树内每个数据库的 _Users 表的数据。

我在 C# 方面的经验有限,但我相信我可以通过一些研究来实现这一目标。但是,我将不胜感激 - 因为将来可以添加项目文件夹,所以我需要应用程序在每次运行时“扫描”数据库(如果这甚至可能的话)。

用 C# 可以实现这种动态数据库连接吗?我可以在一个 dataGridView 中同时使用多个数据源吗?

4

2 回答 2

1

我猜你有一个包含多个项目的解决方案,每个项目都有一个 .config 文件,其中放置了连接字符串。您可以为解决方案中的多个项目创建一个共享的 .config 文件,但这有问题:-config 文件必须适用于每个应用程序,如果在一个项目中您需要在 .config 文件中放置一些会破坏其他项目的内容怎么办? . 您可以将共享资源用于多个项目,但我认为(我不确定)如果您想更改必须再次编译的值。反正。要使用资源文件,您可以看到: 如何在一个解决方案中的项目之间使用共享资源文件?

您也可以阅读: 将数据库连接字符串放在 .resx 文件中

对于共享的 .config 文件: 多项目解决方案中的通用配置文件?

于 2015-04-20T16:00:59.073 回答
0

T4 模板可以收集数据库的完整路径。

<#@ template debug="true" hostSpecific="true" #>
    <#@ output extension=".cs" #>
    <#@ Assembly Name="System.Core" #>

    <#@ import namespace="System" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Collections.Generic" #>

    <# 
    string path  = @"~\YourProjectPath";
    List<string> dbFiles = GetDBFilesRecursive(path)
    #>
    //Your class code goes here
    <#+
    public List<string> GetDBFilesRecursive(string path)
    {

        List<string> files = new List<string>();

        try
        {
            string[] fileEntries = Directory.GetFiles(path);
            foreach (string fileName in fileEntries)
                files.Add(fileName);
            string [] subdirectoryEntries = Directory.GetDirectories(path);
            foreach(string subdirectory in subdirectoryEntries)
                files.AddRange(GetDBFilesRecursive(subdirectory));
        }
        catch(Exception e)
        {
            throw new Exception("exception occured in tt gen",e );
        }
        return files;
    }
#>
于 2015-04-20T15:41:08.087 回答