Выполнить хранимую процедуру, используя VB.NET - PullRequest
3 голосов
/ 29 декабря 2011

Это моя процедура

ALTER PROCEDURE sp_addUser
     @UserName nvarchar(50),    
     @Prenom nvarchar(50),  
     @Nom nvarchar(50), 
     @Mail nvarchar(50),    
     @Password char(8), 
     @Addresse nvarchar(100),   
     @Ville nvarchar(50),   
     @Province nvarchar(50),    
     @PostalCode char(6),
     @Pays nvarchar(50),    
     @AnimalGenre nvarchar(50), 
     @NomAnimal nvarchar(50),   
     @Race nvarchar(50) 
AS
BEGIN
   INSERT INTO Client
   VALUES (@UserName,@Prenom,@Nom,@Mail,@Password,@Addresse,@Ville,@Province,@PostalCode,@Pays,@AnimalGenre,@NomAnimal,@Race);
END 

Я думаю, что это нормально для хранимой процедуры

Теперь код для добавления значения в базу данных

Sub sp_addUser()

    Dim intRowsAff As Integer

    lblErrMsg.Text = ""
    lblRecsAff.Text = ""

    Dim connectionString As String = WebConfigurationManager.ConnectionStrings("BecsEtMuseauxSQL").ConnectionString
    Dim con As SqlConnection = New SqlConnection(connectionString)

    Dim cmd As New SqlCommand("sp_addUser", con)

    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("@UserName", SqlDbType.VarChar, 50).Value = txtUserName.Text
    cmd.Parameters.Add("@Prenom", SqlDbType.VarChar, 50).Value = txtPrenom.Text
    cmd.Parameters.Add("@Nom", SqlDbType.NVarChar, 50).Value = txtNom.Text
    cmd.Parameters.Add("@Mail", SqlDbType.NVarChar, 50).Value = txtMail.Text
    cmd.Parameters.Add("@Password", SqlDbType.Char, 8).Value = txtPass.Text
    cmd.Parameters.Add("@Addresse", SqlDbType.NVarChar, 100).Value = txtAdresse.Text
    cmd.Parameters.Add("@Ville", SqlDbType.NVarChar, 50).Value = txtVille.Text
    cmd.Parameters.Add("@Province", SqlDbType.NVarChar, 50).Value = txtProvince.Text
    cmd.Parameters.Add("@PostalCode", SqlDbType.Char, 6).Value = txtPostal.Text
    cmd.Parameters.Add("@Pays", SqlDbType.NVarChar, 50).Value = txtPays.Text
    cmd.Parameters.Add("@AnimalGenre", SqlDbType.NVarChar, 50).Value = rblAnimal.Text
    cmd.Parameters.Add("@NomAnimal", SqlDbType.NVarChar, 50).Value = txtAnimal.Text
    cmd.Parameters.Add("@Race", SqlDbType.NVarChar, 50).Value = txtRace.Text

    Try
        cmd.Connection.Open()
        intRowsAff = cmd.ExecuteNonQuery()
    Catch ex As Exception
        lblErrMsg.Text = ex.Message & ex.Source
    End Try
    lblRecsAff.Text = intRowsAff & " record(s) inserted"
    cmd.Connection.Close()
End Sub

После того, как я выполнил метод, VS сказал, что у меня много аргументов для процедуры sp_addUser

Я не понимаю, почему это генерирует ошибку!

Ответы [ 3 ]

3 голосов
/ 14 августа 2013

просто синхронизируйте ваш Sp с методом code code и установите параметры как sp.

Dim dt As New DataTable
    Dim sqlpr1 As New List(Of SqlParameter)

    Dim cmd As New SqlCommand()

    cmd.CommandType = CommandType.StoredProcedure
    cmd.CommandText = "[sp_ItemPackingList]"
    cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = dateDate.Text.Trim()
    cmd.Parameters.Add("@Thk", SqlDbType.VarChar).Value = txtPendQty.Text.Trim()
    cmd.Parameters.Add("@Dia", SqlDbType.VarChar).Value = txtPendQty.Text.Trim()
    Try
        cmd.ExecuteNonQuery()
        lblMessage.Text = "Record inserted successfully"
    Catch ex As Exception
        Throw ex
        obj.GetDataTable("[sp_ItemPackingList]", sqlpr1)

    End Try
2 голосов
/ 29 декабря 2011

Код и хранимая процедура, которую вы разместили, похоже, синхронизированы.

Это настоятельно говорит о том, что хранимая процедура в базе данных не синхронизирована с тем, что вы ожидаете в своем коде. Предлагаю вам проверить, что вы разместили на самом деле хранимую процедуру в БД.

Также обратите внимание: вы не должны ставить перед вашим proc 'sp_', если он не находится в master.

1 голос
/ 22 марта 2013
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Try
   With con
       .ConnectionString = sqlConnectionString
       .Open()
   End With
   With cmd
       .CommandText = "UpdateProcedure"
       .CommandType = CommandType.StoredProcedure
       .Parameters.AddWithValue("CName", txtCName.Text)
       .Parameters(0).SqlDbType = SqlDbType.NVarChar
      .Parameters.AddWithValue("CAddress",txtCAddress1.Text)
       .Parameters(1).SqlDbType = SqlDbType.NVarChar
       .Parameters.AddWithValue("CCity", txtCCity)
       .Parameters(2).SqlDbType = SqlDbType.NVarChar
       .ExecuteNonSqlQuery()
    End With
Catch ex As Exception

Finally
  cmd.Dispose()
  con.Close()
End Try
...