【问题标题】:Fail to fill datatable using data adapter使用数据适配器填充数据表失败
【发布时间】:2014-07-03 08:26:42
【问题描述】:

我正在尝试将数据与数据库匹配并使用 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。但我检查了用户名和密码与数据库完全相同。

【问题讨论】:

  • 你尝试手动运行语句吗???
  • 为什么不能使用存储过程?
  • 使用存储过程查看 Answer1 并尝试此操作。
  • 是的,我已经尝试过了。可以工作

标签: c# oracle datatable ado.net dataadapter


【解决方案1】:

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;
   }

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 2014-02-05
    • 1970-01-01
    • 2011-09-26
    • 2013-11-27
    • 2016-07-23
    • 1970-01-01
    • 2019-04-17
    • 2014-03-23
    相关资源
    最近更新 更多