菜鸟的问题,请教用户注册的代码

helloqiqi 2003-09-11 01:07:08
以下是一段不完整的用户注册的代码,请问还要加上什么代码才完整?
比如不允许注册的用户有重名等等.谢谢高手请教了

private void Button1_Click(object sender, System.EventArgs e)
{

OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\1\\login1.mdb");
OleDbCommand myCommand = new OleDbCommand("insert into login (用户登录名,密码,确认密码,职业,email) values ('" + TextBox1.Text.ToString() + "','" + TextBox2.Text.ToString() + "','" + TextBox3.Text.ToString() + "','" + TextBox4.Text.ToString() + "','" + TextBox5.Text.ToString() + "')" , myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
...全文
418 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloqiqi 2003-09-11
  • 打赏
  • 举报
回复
除了要加入using System.Data.OleDb;
还要加入什么命名空间呢?
91bct 2003-09-11
  • 打赏
  • 举报
回复
其实你也可以把【用户登录名】,当作主键,因为你要求【用户登录名】不能重复,所以当有重复的名字时insert就不能成功,这样在insert处做个try...catch处理。
91bct 2003-09-11
  • 打赏
  • 举报
回复
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\1\\login1.mdb");
string sql="select 用户登录名 from login where 用户登录名='"+this.txtUserID.Text.Trim()+"'";
OleDbCommand cmd=new OleDbCommand(sql,myConnection);
if(myConnection.State!=ConnectionState.Open)
myConnection.Open();
if(cmd.ExecuteScalar() ==null)
{
string sqll="insert into login(用户登录名,密码) values('" + this.txtUserID.Text.Trim()
+ "','"+ this.txtPwd.Text.Trim()+ "')";
OleDbCommand myCommand = new OleDbCommand( sqll, myConnection);
try
{
myCommand.ExecuteNonQuery();

}
catch(Exception err)
{
Debug.Fail(err.Message);
}
finally
{
myCommand.Connection.Close();
}
}
else
{
MessageBox.Show("有重复");
}
helloqiqi 2003-09-11
  • 打赏
  • 举报
回复
呵呵,谢谢了,可能是用int iNumber=(int)cmd.ExecuteScalar();
我刚学没多久
91bct 2003-09-11
  • 打赏
  • 举报
回复
不好意思,刚才说错了
不能用这样:
int iNumber=cmd.ExecuteNonQuery();
if(iNumber<=0)
因为对于Command的ExecuteNonQuery方法,
对 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
我一会给你完整的代码。
helloqiqi 2003-09-11
  • 打赏
  • 举报
回复
调试是通过的,但是数据是加不进数据库的
91bct 2003-09-11
  • 打赏
  • 举报
回复
单步跟踪看看iNumber的值是什么?因为我也没有去执行这些代码,要不你等一下我试试
91bct 2003-09-11
  • 打赏
  • 举报
回复
我怀疑是值与数据类型不对应,贴出出错信息看看
91bct 2003-09-11
  • 打赏
  • 举报
回复
提示什么错误?贴出来看看
helloqiqi 2003-09-11
  • 打赏
  • 举报
回复
我把你的代码加进去了,但是执行的结果不对,数据加不进数据库,我是哪里错了呢?

private void Button1_Click(object sender, System.EventArgs e)
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\1\\login1.mdb");
string sql="select count(用户登录名) from login where 用户登录名='"+
this.TextBox1.Text.Trim()+"'";
OleDbCommand cmd=new OleDbCommand(sql,myConnection);
if(myConnection.State!=ConnectionState.Open)
myConnection.Open();
int iNumber=cmd.ExecuteNonQuery();
myConnection.Close();
if(iNumber<=0)
{

OleDbCommand myCommand = new OleDbCommand("insert into login (用户登录名,密码,确认密码,职业,email) values ('" + TextBox1.Text.ToString() + "','" + TextBox2.Text.ToString() + "','" + TextBox3.Text.ToString() + "','" + TextBox4.Text.ToString() + "','" + TextBox5.Text.ToString() + "')" , myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}


}
helloqiqi 2003-09-11
  • 打赏
  • 举报
回复
谢谢楼上的朋友了,
我用的是access数据库 ,有没有针对Access的?
91bct 2003-09-11
  • 打赏
  • 举报
回复
上面这个存储过程是对应Oracle的
91bct 2003-09-11
  • 打赏
  • 举报
回复
其实,这两部分都可以放在数据库中处理,创建个存储过程:
create or replace procedure ValidateAndLoginUserID(
p_userID in login.%type,
p_pwd in login.%type,
p_flag out boolean)
as
iNumber int;
begin
p_flag:=false;
select count(用户登录名) into iNumber from login where 用户登录名=p_userID
and pwd=p_pwd;
if(iNumber<=0)
insert into login(用户登录名,密码 ) values(p_userID,p_pwd);
p_flag=true;
end if;
return p_flag;
end ValidateAndLoginUserID;
这样你在外面调用存储过程,取回值判断是true还是false。
91bct 2003-09-11
  • 打赏
  • 举报
回复
在插入之前先进行用户名判断:
string sql="select count(用户登录名) from login where 用户登录名='"+
this.txtBox_UserID.Text.Trim()+"'";
OleDbCommand cmd=new OleDbCommand(sql,myConnection);
if(myConnection.State!=ConnectionState.Open)
myConnection.Open()'
int iNumber=cmd.ExecuteNonQuery();
myConnection.Close();
if(iNum<=0)
{
//处理你上面的代码。
}

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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