繁体   English   中英

带有参数的SQL查询不起作用 - 带有Oracle DB的ASP.NET

[英]SQL Query with Parameters not working - ASP.NET with Oracle DB

如果我硬编码用户名,这工作正常。 不会使用参数,我尝试了很多不同的方法。 我错过了什么? 当我使用参数时,表总是以零计数结束。

    protected void LogIn(object sender, EventArgs e)
{
    OracleConnection con = TTTrackerConnection.DevDBConnection();
    String myUserName = UserName.Text;
    DataSet user_ds = new DataSet();
    String myPW = Password.Text;
    using (con)
    {
        con.Open();

        String sql = "SELECT USER_PW FROM TT_USER WHERE USER_LOGINNAME = :username";
        OracleCommand cmdFindUser = new OracleCommand(sql, con);
        OracleParameter uname = cmdFindUser.CreateParameter();
        uname.ParameterName = "username";
        uname.OracleDbType = OracleDbType.Varchar2;
        uname.Value = UserName.Text;
        cmdFindUser.Parameters.Add(uname);
        OracleDataAdapter oda = new OracleDataAdapter(cmdFindUser);
        oda.Fill(user_ds);

        con.Close();
    }

    if (user_ds.Tables[0].Rows.Count != 0)
    {
        String userPW = user_ds.Tables[0].Rows[0].Field<string>("USER_PW");
        if (myPW == userPW)
        {
            lblPasswordResult.Text = "Password Matched";

        }
        else
        {
            lblPasswordResult.Text = "Password does not Match";
        }
        }
    else
    {
        lblPasswordResult.Text = "Login not found";
    }
}//end Login button click method

对于用于字符串的Oracle参数类型, OracleDbType.Varchar2以及OracleDbType.NVarchar2 ,您需要指定一个大小:

uname.Size = 50;

其中实际值应根据模式(在您的情况下为USER_LOGINNAME )对应于列的字符长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM