2014-06-10 75 views
1

我必须尝试使用​​vb.net在ASP.NET上执行注册表单。我已经有了与我的数据库的连接,我已经有了代码。不幸的是,我在尝试验证表单时收到错误消息:连接未关闭。连接的当前状态已打开。连接未关闭。该连接的当前状态为开放

此外,它没有在数据库中插入数据。有人能帮助我吗。谢谢。

Imports System.Data 
Imports System.Configuration 
Imports System.Data.SqlClient 
Partial Class Register2 

Inherits System.Web.UI.Page 

'declaring connection string and command 
'here we are extracting connection string from web.config file 
Private con As New SqlConnection(ConfigurationManager.ConnectionStrings("MauriAuctions").ToString()) 
Private cmd As New SqlCommand() 

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click 
    Try 
     cmd.Connection = con 
     'assigning connection to command 
     cmd.CommandType = CommandType.Text 
     'representing type of command 
     'cmd.CommandText = "INSERT INTO UserDetails (Fname,Lname,Email,Password,Gender,Dob,Mobile,Address) values 
     ' (@Fname,@Lname,@Email,@Password,@Gender,@Dob,@Mobile,@Address)"; 
     cmd.CommandText = "INSERT INTO tbl_user values(@User_Name,@Fname,@Lname,@Email,@Pwd,@Street,@Town,@City,@Tel)" 

     'adding parameters with value 
     cmd.Parameters.AddWithValue("@User_Name", txtUserName.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Fname", txtFirstName.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Lname", txtLastName.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Email", txtEmail.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Pwd", txtPassword.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Street", txtStreet.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Town", txtTown.Text.ToString()) 
     cmd.Parameters.AddWithValue("@City", txtCity.Text.ToString()) 
     cmd.Parameters.AddWithValue("@Tel", txtMobile.Text.ToString()) 

     con.Open() 
     'opening connection 
     cmd.ExecuteNonQuery() 
     'executing query 
     con.Close() 
     'closing connection 

     lblMsg.Text = "Registered Successfully.." 
    Catch ex As Exception 
     lblMsg.Text = ex.Message.ToString() 
    End Try 
End Sub 

Protected Sub btnClear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClear.Click 
    'refreshing/reloading page to clear all the controls 
    Page.Response.Redirect(Page.Request.Url.ToString(), True) 
End Sub 

回答

0

您需要关闭在finally条款

Finally con.Close() 
+0

非常感谢它的工作原理。 – Banner

1

尝试连接使用Using为您选择sqlconnection
Read this

Using con As New SqlConnection(ConfigurationManager.ConnectionStrings("MauriAuctions").ToString()) 
    cmd.Connection = con 
    'assigning connection to command 
    cmd.CommandType = CommandType.Text 
    'representing type of command 
    'cmd.CommandText = "INSERT INTO UserDetails (Fname,Lname,Email,Password,Gender,Dob,Mobile,Address) values 
    ' (@Fname,@Lname,@Email,@Password,@Gender,@Dob,@Mobile,@Address)"; 
    cmd.CommandText = "INSERT INTO tbl_user values(@User_Name,@Fname,@Lname,@Email,@Pwd,@Street,@Town,@City,@Tel)" 

    'adding parameters with value 
    cmd.Parameters.AddWithValue("@User_Name", txtUserName.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Fname", txtFirstName.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Lname", txtLastName.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Email", txtEmail.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Pwd", txtPassword.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Street", txtStreet.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Town", txtTown.Text.ToString()) 
    cmd.Parameters.AddWithValue("@City", txtCity.Text.ToString()) 
    cmd.Parameters.AddWithValue("@Tel", txtMobile.Text.ToString()) 

    con.Open() 


    cmd.ExecuteNonQuery() 


    End Using 
相关问题