我正在尝试使用Visual Studio Win表单创建简单的登录页面。我有用户名和密码作为文本框控件。
以下是应检查数据库中是否存在此类用户的事件:
public static int getNumberOfDigits(long creditCardNumber)
{
//problem with 0's at beginning and more than 10 digits
int nDigitsInCard = 0;
int divisor = (int) creditCardNumber;
for(int i = 0; i <= creditCardNumber; i++){
while(divisor!=0){
divisor/=10;
++nDigitsInCard;
}
}
// return the number of digits in nDigitsInCard
return nDigitsInCard;
}
if (con.State != ConnectionState.Open)
{
con.Open();
}
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "select staff_username, staff_password from staff_accounts";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr.HasRows)
{
if (username.Text == dr["staff_username"].ToString() && pass.Text == dr["staff_password"].ToString())
{
admin.ShowDialog();
}
else
{
label1.Text = "Error";
}
}
}
返回false,这意味着dr.HasRows
不返回任何行,但是在我的数据库中,相同的查询可以正常工作。
将提供任何帮助。
答案 0 :(得分:0)
在调用读取器HasRows
方法之前,应检查Read()
属性。试试:
if (dr.HasRows)
{
while (dr.Read())
{
....