C# 从文件设置数据库连接的替代方法
我有一个web服务,它调用两种不同的web方法 其中一种方法使用C# 从文件设置数据库连接的替代方法,c#,web-services,connection-string,C#,Web Services,Connection String,我有一个web服务,它调用两种不同的web方法 其中一种方法使用SQL服务器连接,另一种方法使用DB2 ODBC连接可以与DB2数据库和SQL server进行通信,但是,对于每种方法,SQL的设计都必须略有不同,因此可以选择切换连接 现在我有了一个解决方案,从存储在服务器上的文本文件中读取字符串值 因此,如果字符串是SQL,则使用SQL连接字符串,ODBC使用ODBC连接字符串 有没有一种更有效的方法可以做到这一点,而不必每次调用web方法时都读取文件,因为我担心在实时环境中,会有大量数据被发
SQL
服务器连接,另一种方法使用DB2
ODBC连接可以与DB2数据库和SQL server进行通信,但是,对于每种方法,SQL的设计都必须略有不同,因此可以选择切换连接
现在我有了一个解决方案,从存储在服务器上的文本文件中读取字符串值
因此,如果字符串是SQL,则使用SQL连接字符串,ODBC使用ODBC连接字符串
有没有一种更有效的方法可以做到这一点,而不必每次调用web方法时都读取文件,因为我担心在实时环境中,会有大量数据被发送。所以我关心的是使用这种方法的速度和性能
我如何实现这一点的示例-
String DBconSQL = "SQL-connection-string";
String DBconODBC = "ODBC-connection-string";
string connection = System.IO.File.ReadAllText(@"filePath");
[WebMethod]
public string stringRETURN(string connection)
{
if(connection == "SQL")
{
string con = "DBconSQL";
string sql = "SQL"
}
if(connection == "ODBC")
{
con = DBconODBC;
sql = "ODBC SQL";
}
//Do stuff here
}
为什么不在第一次读取文件后将每个文件的值存储在内存中,或者将它们存储在代码中呢 i、 e 您可以从任何地方读取和写入这些内容,只要服务器处于运行状态(即应用程序在应用程序域中运行),这些内容就会一直存在
您还应该(希望)意识到在代码或文本文档中存储纯文本凭据的安全问题,并且(如果这是用于生产的话)提供某种形式的加密/安全/减少用于访问数据库的帐户的用户权限;) 在第一次读取文件后,如何将其存储在内存中?如果文件发生更改,会发生什么情况?我已经考虑了这种方法的安全缺陷。根据文件的更改时间更改变量有点困难,但也不过分-因此,如果我像您的示例中那样将这些设置为全局变量,这将把字符串保存到内存中,并且不必每次都读取文件?另外,当文件的文本值更改时会发生什么情况?请参阅关于FileSystemWatcher的最后一条注释,是的,静态类上的静态变量基本上是全局的系统范围内存存储(静态类在系统启动时初始化,并在dll的生存期内保存在内存中)
static class Globals
{
public static string DB2ConnStr = String.Empty;
public static string MSSQLStr = String.Empty;
}