一个c#连接access问题

stoner1030 2012-09-29 01:03:15
代码为:
string username = string.Empty, password = string.Empty;
OleDbCommand comm = new OleDbCommand("select * from tbUser where userName='"
+ txtUser.Text + "'", da.link());//先检索用户名
OleDbDataReader drd = comm.ExecuteReader();//执行检索,返回SqlDataReader对象
drd.Read();
username = drd.GetValue(1).ToString();//获得用户名称
password = drd.GetValue(2).ToString();//获得用户密码

当输入的正确的用户名时运行正常,但是当输入不正确的用户名时,(正常的话应该显示“用户名不正确”),
结果提示 username = drd.GetValue(1).ToString()出问题,查看错误,显示“不存在此行/列的数据”


请高手帮忙给与解决
...全文
4294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
seamanpc 2012-09-29
  • 打赏
  • 举报
回复

if ( drd.HasRows )
{
drd.Read()
username = drd.GetValue(1).ToString();//获得用户名称
password = drd.GetValue(2).ToString();//获得用户密码
}
else
{
MessageBox.Show("用户名不存在或者密码错误");
}


OleDbCommand comm = new OleDbCommand("select * from tbUser where userName='"
+ txtUser.Text + "'", da.link()); 这里不要单独检索用户名了 用户名 + 密码一起检索 当然如果你需要提示用户名存在不存在就单独检索用户名也可以用 drd.HasRows

这样只需要一次连接数据库就可以处理完登陆.
stonespace 2012-09-29
  • 打赏
  • 举报
回复
你应该做个判断,drd.Read不一定会成功,也可能select语句查找不到任何记录满足你的条件,这样drd就不会有数据,应该这样:

if (drd.Read())
{
username = drd.GetValue(1).ToString();//获得用户名称
password = drd.GetValue(2).ToString();//获得用户密码
}
else
{
MessageBox.Show("用户名不存在");
}

109,879

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧