1

如果我有一个dll我在许多 Web 应用程序中使用的方法,可以dll在我的应用程序中使用 this 中的方法。

处理连接字符串的最佳做法是什么?

这些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 在我的 Web 应用程序中使用 a 的好方法吗?还是有比这更好的方法?

4

2 回答 2

1

最好在某种配置中使用连接字符串,例如web.config.

于 2012-08-08T09:03:52.290 回答
1

使用这些静态方法,您几乎把自己踢到了脚上。最佳实践可能是重构类以使用实例方法并通过构造函数或属性注入连接字符串。

无法重构静态方法以包含连接字符串?

public static int Is_Valid_User(string p_u, string p_p, string connectionString)

您也可以硬编码对 [web|app]config 连接字符串的引用,但这只是改变了问题(对固定字符串的依赖),并没有解决它。

于 2012-08-08T09:13:42.960 回答