如果我有一个dll
我在许多网络应用程序中使用我的应用程序中的dll
中的方法。
处理连接字符串的最佳做法是什么?
dll
方法是静态方法..
这就是我做的事情
private static String connectionString = "User Id=xxx;Password=xxx;Host=xxx;Server=xxx;Service=1525;Database=xxx; Client Locale=ar_ae.1256; Database Locale=ar_ae.8859-6; Protocol=olsoctcp;pooling=true;Min Pool Size=4;Max Pool Size=400;Connection Timeout=30";
public static int Is_Valid_User(string p_u, string p_p)
{
int ret = 0; // invalid user
using (IfxConnection conn = new IfxConnection(connectionString))
{
IfxCommand DBCmd = new IfxCommand();
String p = My_Decryption_2(p_p);
try
{
if (conn.State == ConnectionState.Closed)
conn.Open();
DBCmd = new IfxCommand();
DBCmd.Connection = conn;
DBCmd.CommandText = "SELECT nvl(emp_num,0) FROM emp_net WHERE username = ? AND DECRYPT_CHAR(password, 'xxxxxx') = ? ";
DBCmd.Parameters.Add("user_name", p_u);
DBCmd.Parameters.Add("password", p);
using (IfxDataReader dataReader = DBCmd.ExecuteReader())
{
if (dataReader.Read())
ret = (int)dataReader[0];
dataReader.Close();
}
}
catch (ApplicationException e)
{
}
conn.Close();
}
return ret;
}
这是在我的网络应用程序中使用dll
的好方法吗?还是有比这更好的方法?
答案 0 :(得分:1)
最好在某种配置中使用连接字符串,例如web.config
。
答案 1 :(得分:1)
使用这些静态方法你几乎可以用脚射击自己。 最佳实践可能是重构类以使用实例方法并通过构造函数或属性注入连接字符串。
如果不能重构静态方法以包含连接字符串?
public static int Is_Valid_User(string p_u, string p_p, string connectionString)
您也可以硬编码对[web | app]配置连接字符串的引用,但这只会改变问题(对固定字符串的依赖性),而不是解决它。