【转】在XPO中怎么通过配置文件来读取数据库链接

问题描述
有没有方法管理数据库的路径?我需要在每个客户端创建和使用不同的数据库。主要是,我需要管理 为Firebird,DB2,Pervasive,Access,Postgre,MS SQL Server. 创建不同的数据库。任何例子...

解决方案
通常,数据库连接字符串包括一个数据库文件的路径,你可以允许终端用户在你的应用程序配置文件中改变数据库路径,例如: 

<!--  App.config -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    
<appSettings>
        
<add key="ServerType" value="Access" />
        
<add key="Server" value="" />
        
<add key="Database" value="E:data.mdb" />
        
<add key="User" value="" />
        
<add key="Password" value="" />
    
</appSettings>
</configuration>


通过AppSettingReader类来获取配置文件中的设置,然后组合一个连接字符串。我们建议你使用Provider类的GetConnectString方法来(在DevExpress.Xpo.DB命名空间)。


using System.Configuration;
using DevExpress.Xpo;

private static string GetConnectionString() {
    AppSettingsReader config 
= new AppSettingsReader();
    
string serverType, server, database, user, password;
    serverType 
= ((string)(config.GetValue("ServerType"typeof(string))));
    server 
= ((string)(config.GetValue("Server"typeof(string))));
    database 
= ((string)(config.GetValue("Database"typeof(string))));
    user 
= ((string)(config.GetValue("User"typeof(string))));
    password 
= ((string)(config.GetValue("Password"typeof(string))));
    
switch(serverType) {
        
case "MSSQL":
            
return DevExpress.Xpo.DB.MSSqlConnectionProvider.GetConnectionString(server, user, password, database);
        
case "Access":
            
return DevExpress.Xpo.DB.AccessConnectionProvider.GetConnectionString(database, user, password);
        
// ... generate connection strings for other providers, e.g. MySql, Firebird, etc.
        default:
            
return Session.GetDefaultConnectionString();
    }

}
在应用程序的入口,连接字符串必须被赋值到DefaultSession对象。
[STAThread]
static void Main() {
    DevExpress.Xpo.Session.DefaultSession.ConnectionString 
= GetConnectionString();
    Application.Run(
new Form1());
}

posted on 2008-09-26 16:27  Lemon_s  阅读(407)  评论(0)    收藏  举报

导航