2011-08-10 101 views
0

对于我的应用程序的一部分,我需要验证用户SQL帐户的详细信息。在ASP.NET中验证SQL帐户用户名和密码

目前完成的方式是将用户名和密码附加到连接字符串,然后返回包含用户详细信息的数据集。此代码位于try语句中,如果发生异常,它会假定用户的详细信息不正确(这是一种非常糟糕的做事方式!)。

当前的代码是这样的:

iBindClientServices.Services service = new iBindClientServices.Services(); //nasty com+ service   
    try 
    { 
    string szConn = "DSN=xxxxx" + ";UID=" + userName + ";PWD=" + password; 
    //check username and password 
    ADODB.Recordset record = service.GetUserDetail(szConn, ""); 
    } 

    catch(Exception ex) 
    { 
    //login unsuccessfull 
    } 

有一种优雅的方式来做到这一点?

回答

1

如何这段代码

public static bool checkConnection() 
{ 
    SqlConnection conn = new SqlConnection("mydatasource"); 
    try 
    { 
     conn.Open(); 
     return true; 
    } 
    catch (Exception ex) { return false; } 
} 
+0

这比已经正在做什么略胜一筹。我希望有一些SQL库有某种验证方法。这种方法的一个问题是,即使用户名和密码是正确的,它也会对每个异常验证失败 – woggles

+0

我认为检查是否可以使用给定的连接字符串打开与数据库的连接更重要,上面的粘贴代码就是这样做,没有额外的东西。除了使用错误的连接字符串之外,我没有看到在公路使用场景中可能出现的其他异常。那么我不知道任何API只是验证连接字符串。 –

+0

我同意它更好。如果存在基础设施问题(例如数据库或网络故障等),则可能会抛出异常,但后来我想我遇到了更大的问题! – woggles