首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

登陆界面注册按扭有关问题

2012-01-11 
登陆界面注册按扭问题我是个新手.第1次做登陆界面.现在的问题是不知道怎么把注册资料写到数据库里.用的是s

登陆界面注册按扭问题
我是个新手.第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());
}

热点排行