登陆界面注册按扭问题
我是个新手.第1次做登陆界面.现在的问题是不知道怎么把注册资料写到数据库里.用的是sql server2000 .
string s = textBox1.Text.Trim();//用户名
string p = textBox2.Text.Trim();//密码
string p2 = textBox3.Text.Trim();//确认密码
string sql = "select name from name where name= ' " + s + " ' ";
string sql1 = "insert into name values( ' "+s+ " ', ' "+p+ " ') ";
SqlConnection cn = new SqlConnection( "server=.;uid=sa;pwd=sa;database=My_user ");
SqlCommand cmd = new SqlCommand(sql, cn);
SqlCommand cmd1 = new SqlCommand(sql1, cn);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
MessageBox.Show( "用户已存在 ");
}
else if (p != p2)
{
MessageBox.Show( "确认密码错误 ");
}
else
{
MessageBox.Show( "注册成功 ");
cmd1.ExecuteNonQuery();
}
dr.Close();
cn.Close();
再我最后点注册的时候会先显示注册成功,然后跳出错误.
请问问题出在哪.
------解决方案--------------------
SqlConnection cn = new SqlConnection( "server=.;uid=sa;pwd=sa;database=My_user ");
SqlCommand cmd = new SqlCommand(sql, cn);
SqlCommand cmd1 = new SqlCommand(sql1, cn);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
bool IsExists=false;
while(dr.Read())
{
IsExists=true;
}
dr.close();
if (IsExists)
{
MessageBox.Show( "用户已存在 ");
}
else
{
if (p != p2)
{
MessageBox.Show( "确认密码错误 ");
}
else
{
cmd1.ExecuteNonQuery();
MessageBox.Show( "注册成功 ");
}
}
cn.Close();
[解决办法]
你这里两个逻辑,其实用存储过程最好
如果不用存储过程的话
string s = textBox1.Text.Trim();//用户名
string p = textBox2.Text.Trim();//密码
string p2 = textBox3.Text.Trim();//确认密码
string sql = "select name from name where name= ' " + s + " ' ";
SqlConnection cn = new SqlConnection( "server=.;uid=sa;pwd=sa;database=My_user ");
SqlCommand cmd = new SqlCommand(sql, cn);
bool flag = false;
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
MessageBox.Show( "用户已存在 ");
flag = true;
}
dr.Close();
cn.Close();
if(flag == true)
{
sql = "insert into name values( ' "+s+ " ', ' "+p+ " ') ";
cmd = new SqlCommand(sql, cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show( "注册成功 ");
}
[解决办法]
插入语句有错
string sql1 = "insert into name values( ' "+s+ " ', ' "+p+ " ') ";
string sql1 = "insert into name( '表里的用户字段 ', '表里的密码字段 ') values( ' "+s+ " ', ' "+p+ " ') ";
另外你的判断有问题,从下面开始说
else if (p != p2)
{
MessageBox.Show( "确认密码错误 ");
}
else
{
MessageBox.Show( "注册成功 ");
cmd1.ExecuteNonQuery();
}
如果两次密码都一样了,直接就到注册成功这,但这时你并没执行cmd1.ExecuteNonQuery(),怎么会知道是成功还是失败?
判断是否成功失败你得先插入,通过返回值判断成功了还是失败了
try
{
if(Convert.ToInt32(cmd1.ExecuteNonQuery())> 0)
{
MessageBox.Show( "注册成功 ");
}
else
{
MessageBox.Show( "注册失败 ");
}
}
catch(Exception Ex)
{
MessageBox.Show(Ex.ToString());
}