2011-04-26 90 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