关于C# 数据库 用户注册的问题

想通过按钮实现对用户的注册,数据库中用户名为主键所以一旦重复自己报错

调试过程中出现“已有打开的与此command相关联的DataReader,必须先将其关闭”

小白求教 还希望能帮着看看我写的这段代码还有其他什么问题吗 谢谢谢谢

 private void button1_Click(object sender, EventArgs e)
        {
            string username, password1, password2;
            string conString = @"Data Source=LETEMPS;Initial Catalog=海景影城;Integrated Security=true;Pooling=False";
            SqlConnection conn = new SqlConnection(conString);
            try
            {
                string cmd = "INSERT INTO 用户名信息表(用户姓名,用户名,密码,联系方式)VALUES('"+textBox1.Text+ "','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')";
                SqlCommand com = new SqlCommand(cmd, conn);
                //创建数据库连接
                username = textBox2.Text;
                password1 = textBox3.Text;
                password2 = textBox5.Text;
                if (password1 == password2)
                {
                    try
                    {
                        //创建数据库查询命令
                        SqlCommand scmd = new SqlCommand();
                        scmd.Connection = conn;
                        //使用SqlCommand对象的ExecuteReader方法查询所有影院的编号,名称,地点和联系方式操作
                        scmd.CommandText = @"select 用户名 from 用户名信息表";
                        //定义查询方法
                        conn.Open();
                        SqlDataReader reader = scmd.ExecuteReader(CommandBehavior.CloseConnection);
                        if (com.ExecuteNonQuery() != 0)//com.ExecuteNonQuery()执行语句,并返回受影响行数
                            MessageBox.Show("注册成功!");
                        else
                            MessageBox.Show("注册不成功!");
                        conn.Close();//关闭
                    }
                    catch (Exception error)
                    {
                        //输入异常  
                        MessageBox.Show(error.Message, "输入异常", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    finally
                    {
                        conn.Close();//关闭连接  
                        conn.Dispose();//清除连接  
                    }
                }
                else
                {
                    //两次输入的密码不相同,给出提示  
                   MessageBox.Show("两次输入的密码不同!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "操作数据库出错", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            }
            finally
            {
                conn.Close();
            }
        }

4个回答

有sql注入漏洞,自己慢慢摸索什么是sql注入,对你有帮助

  //SqlDataReader reader = scmd.ExecuteReader(CommandBehavior.CloseConnection);///你这句又没有用,加这句干嘛?去掉或者注释掉
                        if (com.ExecuteNonQuery() != 0)//com.ExecuteNonQuery()执行语句,并返回受影响行数
                            MessageBox.Show("注册成功!");
                        else
                            MessageBox.Show("注册不成功!");
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 建议采纳这个回答
3 年多之前 回复
sinat_38607959
sinat_38607959 谢谢谢谢!!
3 年多之前 回复

现在简化了一下代码,
请教怎么能使用户名,姓名,密码三栏不允许为空
private void button1_Click(object sender, EventArgs e)
{
string username, password1, password2;
string conString = @"Data Source=LETEMPS;Initial Catalog=海景影城;Integrated Security=true;Pooling=False";
SqlConnection conn = new SqlConnection(conString);
try
{
string cmd = "INSERT INTO 用户名信息表(用户姓名,用户名,密码,联系方式)VALUES('"+textBox1.Text+ "','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')";
SqlCommand com = new SqlCommand(cmd, conn);
//创建数据库连接
conn.Open();//关闭
if (com.ExecuteNonQuery() != 0)//com.ExecuteNonQuery()执行语句,并返回受影响行数
{ MessageBox.Show("注册成功!"); }
else
{ MessageBox.Show("注册不成功!"); }
conn.Close();//关闭
this.Hide();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库出错", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }
        finally
        {
            conn.Close();
            conn.Dispose();//清除连接
        }
    }
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 那不是判断为空就退出代码执行。private void button1_Click(object sender, EventArgs e) { if(textBox1.Text==""||textBox2.Text==""||textBox3.Text==""){MessageBox.Show("用户姓名,用户名,密码不能为空!");return;}。。。。。原来的代码
3 年多之前 回复

自己改正了 谢谢回答问题的大家~

//SqlDataReader reader = scmd.ExecuteReader(CommandBehavior.CloseConnection);///你这句又没有用,加这句干嘛?去掉或者注释掉
if (com.ExecuteNonQuery() != 0)//com.ExecuteNonQuery()执行语句,并返回受影响行数
MessageBox.Show("注册成功!");
else
MessageBox.Show("注册不成功!");

sinat_38607959
sinat_38607959 恩恩 已改正!!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐