我的应用程序结构如下:
解决方案:MySolution
MySolution中的项目:主机,业务,服务器。
项目之间的引用如下所示: 主机< - 业务 - >服务器 (业务引用主机和服务器,但主机不引用服务器,反之亦然,因为这会导致循环 - )
所以,我在服务器中有一些数据库内容。
我有一个属性:DBConenctionString - 应该包含连接字符串。
我想要做的是从Host设置此属性。
我还在Server项目中保留了与数据库有关的所有方法。
记住接口 - 这样我以后也可以创建一个在线应用程序(web)。
我有一些代码及其工作,但我不知道这是正确的方法。 如果有人可以向我展示一些东西或指出我正确的方向?
CODE: 我在Library中有这个接口(其他两个项目之间的连接):
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);
}
然后是Library中具有接口代码的类:
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;
}
=============================================== ==========================================
从Host on Server设置属性: 它使用Library:
上的界面iDBUtils.DBConnectionString = connectionString.ToString();
从Host on Server执行方法:
iDBUtils.OpenConnection();
你可以看到,图书馆是“中间人”。