我的应用程序的结构如下所示:
解决方案:我的解决方案
MySolution 中的项目:主机、业务、服务器。
项目之间的引用如下所示:Host <-- Business --> Server(Business 引用 Host 和 Server,但 Host 不引用 Server,反之亦然,因为这会导致循环-)
所以,我在服务器中有一些数据库的东西。
我有一个属性: DBConenctionString - 它应该包含连接字符串。
我想要做的是从主机设置这个属性。
我还在服务器项目中保留了所有与数据库有关的方法。
牢记界面 - 这样我也可以在稍后阶段创建一个在线应用程序(网络)。
我有一些代码及其工作,但我不知道这是正确的方法。如果有人可以向我展示一些东西或指出我正确的方向?
代码:我在库中有这个接口(其他两个项目之间的连接):
public interface IDBUtils
{
string DBConnectionString { get; set; }
bool OpenConnection();
bool CloseConnection();
bool ExecuteSQL(string sql);
bool CreateDatabase(string servername, string databaseName, string databaseDataPath);
bool CreateDatabaseUser(string servername, string username, string password);
}
然后库中具有接口代码的类:
public string DBConnectionString
{
get
{
return DBService.DB.DBUtils.DBConnectionString;
}
set
{
DBService.DB.DBUtils.DBConnectionString = value;
}
}
public bool OpenConnection()
{
return DBService.DB.DBUtils.OpenConnection();
}
public bool CloseConnection()
{
return DBService.DB.DBUtils.CloseConnection();
}
public bool ExecuteSQL(string sql)
{
return DBService.DB.DBUtils.ExecuteSQL(sql);
}
public bool CreateDatabase(string servername, string databaseName, string databaseDataPath)
{
return DBService.DB.DBUtils.CreateDatabase(servername, databaseName, databaseDataPath);
}
public bool CreateDatabaseUser(string servername, string username, string password)
{
return DBService.DB.DBUtils.CreateDatabaseUser(servername, username, password);
}
我只会在服务器上显示属性和一种方法,否则会变得太长。
在服务器上: 属性:
public static string DBConnectionString { get; set; }
OpenCONnection() 方法:
public static bool OpenConnection()
{
bool success = false;
try
{
if (DBConnectionString.Length > 0)
{
conn = new SqlConnection(DBConnectionString);
conn.Open();
success = true;
}
}
catch { /* Do nothing... */ }
return success;
}
==================================================== ========================================
从服务器上的主机设置属性:它使用库上的接口:
iDBUtils.DBConnectionString = connectionString.ToString();
要从服务器上的主机执行方法:
iDBUtils.OpenConnection();
如您所见,图书馆是“中间人”。