如果我硬编码用户名,这可以正常工作。不会使用参数,我尝试了很多不同的方法。我错过了什么?当我使用参数时,表总是以零计数结束。
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
答案 0 :(得分:0)
对于用于字符串的Oracle参数类型OracleDbType.Varchar2
以及OracleDbType.NVarchar2
,您需要指定大小:
uname.Size = 50;
其中实际值应与根据架构的列的字符长度相对应(在您的情况下为USER_LOGINNAME
)。