用OleDBcommand怎样多条件查询

小风扇 2011-07-26 11:02:16
我想做一个用户登录界面,需要在access数据库查询记录,我是这样想的:查询到与输入的内容相同的用户名,然后检测该条记录的Password与输入的密码是否相同,如果相同就显示登录成功。我只实现了一部分,求高手帮忙。。下面是我的代码
数据库连接等略过先

string ole = "select*from UserSignTable where UserName=@UserName";
OleDbCommand myCmd = new OleDbCommand(ole, myConn);
myCmd.Parameters.Add("@UserName", OleDbType.VarChar, 20).Value =
this.TextName.Text.Trim();
OleDbDataAdapter myDa = new OleDbDataAdapter(myCmd);
DataSet myDs = new DataSet();
// OleDbDataReader dr = cmd.ExecuteReader();
myDa.Fill(myDs);
if (myDs.Tables[0].Rows.Count > 0)
{
Response.Write("<script>alert('登陆成功!')</script>");
}
...全文
324 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小风扇 2011-07-26
  • 打赏
  • 举报
回复
谢谢了哈,太帅了,想加你好友,行不行啊?我QQ408440577
wwwwb 2011-07-26
  • 打赏
  • 举报
回复
string oleStr = "insert into UserSignTable([UserName],[Password],[E-mail]) values('" + this.txtName.Text.Trim() + "','"+ this.txtPassword.Text.Trim() +"','"+ this.txtEmail.Text.Trim() + "')";

自行修改一下
小风扇 2011-07-26
  • 打赏
  • 举报
回复
现在是注册的问题,上面的代码执行后的结果是用户名,密码和邮箱分别存储到了数据库的三行.....怎么办啊?
WWWWA 2011-07-26
  • 打赏
  • 举报
回复
呵呵,解决了?
小风扇 2011-07-26
  • 打赏
  • 举报
回复
发现问题了:我数据存储的错误,下面是代码:
public OleDbConnection GetConnection()
{
//string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
string myStr = Server.MapPath("UserSign.mdb");
OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + myStr + ";");
return myConn;
}

protected void Button1_Click(object sender, EventArgs e)
{
if (this.txtPassword.Text == this.Rtxtpassword.Text)
{
this.Label4.Text = "正确!";
if (this.txtName.Text != "" && this.txtPassword.Text != "" && this.txtEmail.Text != "")
{
OleDbConnection myConn = GetConnection();
myConn.Open();
string oleStr = "insert into UserSignTable(UserName) values('" + this.txtName.Text.Trim() + "')";
string oleStr1 = "insert into UserSignTable([Password]) values('" + this.txtPassword.Text.Trim() + "')";
string oleStr2 = "insert into UserSignTable([E-mail]) values('" + this.txtEmail.Text.Trim() + "')";
OleDbCommand myCmd = new OleDbCommand(oleStr, myConn);
OleDbCommand myCmd1 = new OleDbCommand(oleStr1, myConn);
OleDbCommand myCmd2 = new OleDbCommand(oleStr2, myConn);
myCmd.ExecuteNonQuery();
myCmd1.ExecuteNonQuery();
myCmd2.ExecuteNonQuery();
Response.Write("<script>alert('注册成功!')</script>");
}
}
else
{
this.Label4.Text = "两次输入不一致!";
}
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
if (this.txtName.Text != "")
{
OleDbConnection myConn = GetConnection();
// OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("pets.mdb") + ";");
myConn.Open();
string ole = "select*from UserSignTable where UserName=@UserName";
OleDbCommand myCmd = new OleDbCommand(ole, myConn);
myCmd.Parameters.Add("@UserName", OleDbType.VarChar, 20).Value =
this.txtName.Text.Trim();
OleDbDataAdapter myDa = new OleDbDataAdapter(myCmd);
DataSet myDs = new DataSet();
myDa.Fill(myDs);
if (myDs.Tables[0].Rows.Count > 0)
{
Response.Write("<script>alert('该用户名已存在!')</script>");
}
else
{
Response.Write("<script>alert('用户名可用!')</script>");
}
myDa.Dispose();
myDs.Dispose();
myConn.Close();
}
else
{
Response.Write("<scrpt>alert('用户名不能为空!')</script>");
}
}
小风扇 2011-07-26
  • 打赏
  • 举报
回复
直接打开access是吧?打开了,看到了里面的内容了,然后干什么?
WWWWA 2011-07-26
  • 打赏
  • 举报
回复
我太菜了,不明白你啥意思,我把代码都发出来你帮忙看看吧(帮忙想想怎样实现那些功能):
显示OLE中的内容会吧,将OLE中的内容在ACCESS中运行会吧?
小风扇 2011-07-26
  • 打赏
  • 举报
回复
我太菜了,不明白你啥意思,我把代码都发出来你帮忙看看吧(帮忙想想怎样实现那些功能):
public OleDbConnection GetConnection()
{
//string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
string myStr = Server.MapPath("UserSign.mdb");
OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + myStr + ";");
return myConn;
}

protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextName.Text != "" && this.TextPassword.Text != "")
{
OleDbConnection myConn = GetConnection();
// OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("pets.mdb") + ";");
myConn.Open();
string ole = "select*from UserSignTable where [UserName]='" + this.TextName.Text + "' AND [Password]='" + this.TextPassword.Text + "'"";
OleDbCommand myCmd = new OleDbCommand(ole, myConn);
myCmd.Parameters.Add("@UserName", OleDbType.VarChar, 20).Value =
this.TextName.Text.Trim();
OleDbDataAdapter myDa = new OleDbDataAdapter(myCmd);
DataSet myDs = new DataSet();
// OleDbDataReader dr = cmd.ExecuteReader();
myDa.Fill(myDs);
if (myDs.Tables[0].Rows.Count > 0)
{
//Response.Redirect("~/Default.aspx");
Response.Write("<script>alert('登陆成功!')</script>");
}
else
{
Response.Write("<script>alert('登陆失败!')</script>");
}
myDa.Dispose();
myDs.Dispose();
myConn.Close();
}
else
{
Response.Write("<script>alert('用户名或密码不能为空!')</script>");
}
}
WWWWA 2011-07-26
  • 打赏
  • 举报
回复
string ole = "select*from UserSignTable where [UserName]='"+this.TextName.Text+"' AND [Password]='"+this.TextPassword.Text+"'"
将OLE中的内容显示出来看看,在ACCESS中运行,看看结果如何
小风扇 2011-07-26
  • 打赏
  • 举报
回复
where [UserName]='"+this.TextName.Text+"' AND [Password]='"+this.TextPassword.Text+"'"
不知道为什么,改成这样以后就只显示登录失败
WWWWA 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangxuecheng92 的回复:]
?是不是@+字段名
[/Quote]
不是,是参数

假设均为字符型
string ole = "select*from UserSignTable where [UserName]='"+this.TextName.Text+"' AND [Password]='"+this.TextPassword.Text+"'"
小风扇 2011-07-26
  • 打赏
  • 举报
回复
[UserName]=this.TextName.Text AND [Password]=this.TextPassword.Text
是这样吗?好像不行
小风扇 2011-07-26
  • 打赏
  • 举报
回复
?是不是@+字段名
WWWWA 2011-07-26
  • 打赏
  • 举报
回复
string ole = "select*from UserSignTable where [UserName]=? AND [Password]=?";
将参数传递进去
小风扇 2011-07-26
  • 打赏
  • 举报
回复
我的错啊!!!我结贴分数全给了WWWA,木有看清楚最后回答我的那个前辈叫WWWb,对不起啊,我应该散分的

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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