2014-05-15 74 views
0

我嘗試將數據與數據庫匹配並使用dataadapter填充我的數據表。如果匹配,用dataadapter填充數據表。如果不匹配,則顯示消息。但我的用戶名和密碼與數據庫匹配,它仍然顯示消息。在調試模式下,用戶名和密碼全部通過,但不填寫數據表。未能使用數據適配器填充數據表

using (OracleConnection conn = new OracleConnection()) 
{ 
    conn.ConnectionString = connStr; 
    conn.Open(); 

    string sql = @"select user_id, password, status, role_id, email, contact_no, 
        last_login_date, created_by, last_update_date, last_update_by 
        from users where user_id = :userID and password = :pwd"; 

    using (OracleCommand cmd = new OracleCommand()) 
    { 
     cmd.Connection = conn; 
     cmd.CommandText = sql; 

     cmd.Parameters.Add("userID", OracleType.VarChar).Value = userID; 

     cmd.Parameters.Add("pwd", OracleType.VarChar).Value = pwd; 

     DataTable dt = new DataTable(); 
     OracleDataAdapter adapter = new OracleDataAdapter(cmd); 
     adapter.Fill(dt); 

     if (dt.Rows.Count <= 0) 
     { 
      msg = "Invalid Login ID or Password"; 
     } 

     return dt; 
    } 
} 

dt.Rows.Count是0.但我檢查用戶名和密碼是完全相同的數據庫。

+0

沒有ü嘗試手動運行該語句??? – qamar

+0

爲什麼你不能使用存儲過程? – user3217843

+0

請參閱存儲過程的答案並嘗試此操作。 – user3217843

回答

0

SQL:

create procedure sp_authenticate 
(
    @userId varchar(50), 
    @pass varchar(50) 
) 
as 
begin 
    select user_id, password, status, role_id, email, contact_no, 
    last_login_date, created_by, last_update_date, last_update_by 
    from users where user_id = @userid and password = @pass 
end 

C#代碼:

using (OracaleConnection con=new OracaleConnection()) 
{ 
    conn.ConnectionString = connStr; 
    conn.Open(); 

    using (OracleCommand cmd = new OracleCommand()) 
    { 
     cmd.Connection = conn; 
     cmd.CommandText = "sp_authenticate"; //name of your procedure 
     cmd.CommandType = CommandType.StoredProcedure; 

     cmd.Parameters.Add("@userid", OracleType.VarChar,50).value=userID; 
     cmd.Parameters.Add("@password", OracleType.VarChar,50).value=pwd; 

     DataTable dt = new DataTable(); 
     OracleDataAdapter adapter = new OracleDataAdapter(cmd); 
     adapter.Fill(dt); 

     if (dt.Rows.Count <= 0) 
     { 
      msg = "Invalid Login ID or Password"; } 
     } 

     return dt; 
    } 
+0

問題解決了。謝謝你 – kassiopite