【问题标题】:SQL Query with Parameters not working - ASP.NET with Oracle DB带参数的 SQL 查询不起作用 - 带有 Oracle DB 的 ASP.NET
【发布时间】:2017-08-12 07:41:11
【问题描述】:

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

    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

【问题讨论】:

  • ParameterName 是否需要以: 为前缀?
  • @DavidG 我刚试过,结果没有区别。令人困惑。
  • @DavidG 仅在查询中。 msdn.microsoft.com/en-us/library/…
  • @LeeAmes 语法示例代码看起来正确。参数的值会不会产生任何结果?一个流浪的角色?在将输入分配给参数之前验证输入。
  • 只是查找了一些已知良好的代码,我们在其中做同样的事情。我发现的唯一区别是额外的uname.Direction = ParameterDirection.Input;,但这是默认设置,不应该有任何区别。我们总是使用冒号:在名称之前,也在ParameterName中。可能是类型不匹配 - OracleDbType.NVarchar2

标签: c# sql asp.net oracle11g


【解决方案1】:

对于用于字符串的Oracle参数类型OracleDbType.Varchar2OracleDbType.NVarchar2,需要指定大小:

uname.Size = 50;

根据架构,实际值应对应于列的字符长度(在您的情况下为USER_LOGINNAME)。

【讨论】:

  • 大小和正确的类型(在本例中为字符)是答案。非常非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 2013-10-10
  • 2020-12-10
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多