2011-04-26 93 views
0

我无法将数据从注册表单插入到sqlserver-2008中。我在VS中遇到错误:连接未关闭。连接的当前状态已打开。插入记录到sqlserver db

下面是我的代码:

protected void buttonRegister(object sender, EventArgs e) 
{ 
    SqlConnection objCon = new SqlConnection(strCon); 

    try 
    { 
     objCon.ConnectionString = strCon; 
     objCon.Open(); 
    } 
    catch (Exception ex) 
    { 
     this.lblConnect.Text = "Unable to connect to database."; 
    } 

    if (objCon.State == System.Data.ConnectionState.Open) 
    { 
     Session["users"] = this.txtUsername.Text; 
     Session["pwd"] = this.txtPassword.Text; 
     lblConnect.Text = "Connected"; 

     string sql = @"INSERT INTO user (firstname, middlename, lastname, username, email, password) VALUES ('" + txtFirstname.Text 
      + "' , '" + txtMiddlename.Text + "', '" + txtLastname.Text + "', '" + txtUsername.Text + "', '" + txtEmailAddr.Text 
      + "', '" + txtPassword.Text + "')"; 

     objCon.Open(); 
     SqlCommand cmd = new SqlCommand(sql, objCon); 
     cmd.ExecuteNonQuery(); 
     SqlDataReader rd = cmd.ExecuteReader(); 

     objCon.Close(); 
     objCon.Dispose(); 
    } 
    else 
    { 
     lblConnect.Text = "Unable to connect to database."; 
        objCon.Close(); 
     objCon.Dispose(); 

    } 
    objCon.Close(); 
    objCon.Dispose(); 

} 

任何想法,为什么它不插入SQL Server的?请帮忙!任何帮助深表感谢。

+0

嗨!如果你想在你的文章中包含源代码,你应该缩进四个空格,所以它将被正确格式化。或者你可以选择所有的代码,然后点击大括号中的按钮:) – NikiC 2011-04-26 15:25:12

+0

考虑使用表格适配器。您的代码按原样进行SQL注入。非常危险! – turtlepick 2011-04-26 15:32:46

+0

@flaviotsf这看起来像copypasta给我。我想他只是想了解数据库连接的工作原理。你绝对正确的重新:SQL注入,但他可能是最好的保持现在简单,恕我直言。 – Matthew 2011-04-26 15:36:36

回答

0

它看起来像我第二次打开objCon。您的if确保它已打开,然后在分配sql字符串后尝试再次打开它。

你有这样的条件:

if (objCon.State == System.Data.ConnectionState.Open) 

那么,条件中你说objCon.Open();

消除该问题objCon.Open();

+0

谢谢。我摆脱了重复和插入似乎工作。我有一个主键ID在我的表和我的SQL语句是字符串SQL = @“INSERT INTO flightuser(ID,名,中间名,姓,用户名,电子邮件,密码)VALUES('”+'2'+'','' “+ txtFirstname.Text +”','“+ txtMiddlename.Text +”','“+ txtLastname.Text +”','“+ txtUsername.Text +”','“+ txtEmailAddr.Text +”' ,''+ txtPassword.Text +'')“;我如何做到这一点,所以我不必指定ID? – multiv123 2011-04-26 16:14:23

+0

我不确定你的评论是在问什么。如果你的PK是一个自动编号,你可能不应该明确地为它设置一个值。 – Matthew 2011-04-26 16:17:56

+0

如何在每次插入新记录时将id设置为自动增量? – multiv123 2011-04-26 16:24:09