Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215

    [VB.NET] Utilizzo store procedure

    Ciao a tutti sto utilizzando per la prima volta le store procedure
    e sto cercando di farmi restituire quando creo un record con
    ID contatore
    Nome Varchar(20)
    ll'ide che l'sql server da al nuovo record
    sto facendo varie prove ma mi da alcuni errori che nn trovo
    posto qui il codice
    se qualcuno riesce ad individuare il problema ne sarei grato

    %
    Public Class outparamswithacommand


    Public Sub Run()
    Dim MsgString As String

    Dim myConnection As SqlConnection

    myConnection = New SqlConnection("server=(local);Trusted_Connection=y es; database= TestLinee")

    Try
    Dim CreateProcCommand As SqlCommand
    Dim DropProcCommand As SqlCommand
    CreateProcCommand = New SqlCommand("CREATE PROCEDURE InsertPercorso @Domenico nchar(15), @Identity int OUT as INSERT INTO PercorsoStradale (Denominazione) VALUES(@Domenico)RETURN @@ROWCOUNT", myConnection)
    DropProcCommand = New SqlCommand("IF EXISTS (SELECT name FROM sysobjects WHERE name = 'InsertPercorso' AND type = 'P') DROP PROCEDURE InsertPercorso", myConnection)

    myConnection.Open()
    DropProcCommand.ExecuteNonQuery()
    CreateProcCommand.ExecuteNonQuery()

    Dim myCommand As SqlCommand
    myCommand = New SqlCommand("InsertPercorso", myConnection)
    myCommand.CommandType = CommandType.StoredProcedure
    ' Fill the parameters collection based upon stored procedure
    Dim workParam As SqlParameter

    workParam = myCommand.Parameters.Add("@@ROWCOUNT", SqlDbType.Int, 4)
    ' ParameterDirection.Input is the default for the Direction property. Thus the following line is not
    ' needed here. To set the Direction property to its default value, use the following line.
    'workParam.Direction = ParameterDirection.Input

    workParam = myCommand.Parameters.Add("@CompanyName", SqlDbType.NChar, 40)
    workParam.Direction = ParameterDirection.Output



    MsgString = myCommand.Parameters("@ROWCOUNT").Value.ToString()
    Catch e As Exception
    MsgString = e.ToString()
    Finally
    myConnection.Close()
    End Try

    MsgBox(MsgString)
    End Sub
    %
    La mia pazzia continua a prosciugare la mia anima

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Credo che sia più opportuno usare un altro approccio, almeno con i database di tipo client/server come SQL Server.

    A livello teorico, crea una stored procedure che ti generi un contatore univoco da attribuire al nuovo record in fase di inserimento e compila il campo "ID" con il valore ottenuto, suppongo all'interno di un DataSet: in questo modo, avrai già lato client l'ID che ti consente, ad ogni operazione di aggiornamento o eliminazione, di individuare il record sul server e riflettere le modifiche sul database.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    mmmhhh?
    ho capito quello che dici
    il discorso e questo la store procedure che mi restituisce il row count c'e l'ho
    ora nn so come fa buttare questo valore in una variabile
    La mia pazzia continua a prosciugare la mia anima

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da M@LKAV
    il discorso e questo la store procedure che mi restituisce il row count c'e l'ho
    ora nn so come fa buttare questo valore in una variabile
    Meglio se usi una tabella contenente i valori da usare per i singoli generatori di numeri progressivi da usare come contatori (uno per ogni tabella, suppongo).

    SQL Server offre anche campi specifici per questo scopo che forse potrebbero fare al caso tuo; io cerco sempre di implementare questa funzionalità "manualmente" (ove possibile) per mantenere una compatibilità il più elevata possibile ad un cambio del DB sottostante su cui si basa la mia applicazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    ok ti ringrazio provero.....
    La mia pazzia continua a prosciugare la mia anima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.