2012-01-01 1 views
0

настоящего времени я использую поставщик HDI членства и дизайн выглядит, как показано ниже:Вставка данных в базу данных SQL Server с помощью VB.Net

enter image description here

Теперь я пытаюсь создать новый пользователь и вставить эти значения в базу данных, как показано ниже:

Try 
    Dim connectionString As String = "Data Source=.\sqlexpress;Initial Catalog=HDIMembershipProvider;Integrated Security=True" 
    Using cn As New SqlConnection(connectionString) 
     cn.Open() 
     Dim cmd As New SqlCommand() 
     cmd.CommandText = "INSERT INTO Users VALUES(@Username,@Password,@Email,@PasswordQuestion,@PasswordAnswer)" 

     Dim param1 As New SqlParameter() 
     param1.ParameterName = "@Username" 
     param1.Value = txtUsername.Text.Trim() 
     cmd.Parameters.Add(param1) 

     Dim param2 As New SqlParameter() 
     param2.ParameterName = "@Password" 
     param2.Value = txtPassword.Text.Trim() 
     cmd.Parameters.Add(param2) 

     Dim param3 As New SqlParameter() 
     param3.ParameterName = "@Email" 
     param3.Value = txtEmail.Text.Trim() 
     cmd.Parameters.Add(param3) 

     Dim param4 As New SqlParameter() 
     param4.ParameterName = "@PasswordQuestion" 
     param4.Value = txtSecurityQuestion.Text.Trim() 
     cmd.Parameters.Add(param4) 

     Dim param5 As New SqlParameter() 
     param5.ParameterName = "@PasswordAnswer" 
     param5.Value = txtSecurityAnswer.Text.Trim() 
     cmd.Parameters.Add(param5) 

     cmd.Connection = cn 
     cmd.ExecuteNonQuery() 
     cn.Close() 
    End Using 
    Successlbl.show 
    Successlbl.show.Text = "Regisration Success." 
Catch 
    Errolbl.Show() 
    Errolbl.Text = "Your account was not created.Please try again." 
End Try 

Теперь проблема заключается в том, что данные не вставляются в базу данных. Я хотел бы знать, может ли кто-нибудь указать мне, где я ошибаюсь?

+0

Вы глотания каких-либо исключений - Вам необходимо войти в исключение или, по крайней мере, узнать, что это такое, прежде чем любая помощь может быть предоставлена. Не делайте 'Catch', не выбирая хотя бы исключения. – Oded

+0

@ Oded-Я получаю это исключение: Имя столбца или количество заданных значений не соответствует определению таблицы. – coder

ответ

2

Ваша инструкция вставки неверна - поскольку вы не указываете имена полей, вы должны указывать значения для всех столбцов.

Исправление состоит в том, чтобы указать имена столбцов, в которые вы вставляете.

На скриншоте также показано, что есть нужный столбец ApplicationName, поэтому, если он не имеет DEFAULT, вам также необходимо его предоставить.

Предполагая, что у вас есть DEFAULT, определенный на ApplicationName:

cmd.CommandText = "INSERT INTO Users (Username, Password, Email, PasswordQuestion, PasswordAnswer) VALUES(@Username,@Password,@Email,@PasswordQuestion,@PasswordAnswer)" 
+0

@ Oded-Спасибо, что указали на меня. Теперь все прошло отлично. – coder

+0

@ Oded-Now У меня есть проблема, что вы можете решить эту проблему так теперь, как я упоминаю путь приложения, поскольку в web.config у нас есть тег членства, в котором мы упоминаем имя приложения, но в app.config, как я упоминаю что? Как я спросил сейчас в этом вопросе http://stackoverflow.com/questions/8692694/how-to-add-application-name-to-appsettings. Можете ли вы помочь мне в этом. – coder

+0

@ Киран - Во-первых, я **, а не **, единственный, который может вам помочь. И похоже, что у вас уже есть ответы на него. – Oded