Intercettare errore

martedì 04 settembre 2007 - 10.02

flytouch Profilo | Junior Member

Come si fa ad intercettare un errore di sintassi su una stored anche quando il query analizer non lo rileva, ma ti viene intercettato dal try e catch?
Grazie

lbenaglia Profilo | Guru

>Come si fa ad intercettare un errore di sintassi su una stored
>anche quando il query analizer non lo rileva, ma ti viene intercettato
>dal try e catch?

Ci fai vedere il codice della stored procedure?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Si hai ragione
Questa e la stored che hai visto prima
CREATE PROCEDURE INSCO(
@ragionesociale VARCHAR(50),
@nome VARCHAR(50),
@cognome VARCHAR(50),
@indirizzo VARCHAR(100),
@cap int,
@comune VARCHAR(50),
@pv VARCHAR(5),
@partitaiva int,
@telefono int,
@emailabbonato VARCHAR(50),
@dtcandidatura datetime,
@des01 VARCHAR(3000),
@IDAbbonato int OUTPUT
)
AS
BEGIN
Insert into Abbonati(ragionesociale,nome,cognome,indirizzo,cap,comune,pv,partitaiva,telefono,emailabbonato,dtcandidatura,des01)
values (@ragionesociale,@nome,@cognome,@indirizzo,@cap,@comune,@pv,@partitaiva,@telefono,@emailabbonato,@dtcandidatura,@des01)
SET @IDAbbonato = SCOPE_IDENTITY()
END

Questo e il codice:

Dim conn As SqlConnection
Dim strInsert As String
Dim cmdInsert As SqlCommand

dim oggi as string
dim now as DateTime = DateTime.Now
dim adesso as integer = now.hour
oggi= now.tostring("d")

conn = New SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=Capello; Integrated Security= SSPI;")
cmdInsert = New SqlCommand( "insco", conn )
cmdInsert.Parameters.Add( "@ragionesociale", textragione.Text )
cmdInsert.Parameters.Add( "@nome", textnome.Text )
cmdInsert.Parameters.Add( "@cognome",textcognome.Text)
cmdInsert.Parameters.Add( "@indirizzo",textindirizzo.Text)
cmdInsert.Parameters.Add( "@cap",SqlDbType.int).value=textcapo.text
cmdInsert.Parameters.Add( "@comune", textcomune.Text )
cmdInsert.Parameters.Add( "@pv", textprovincia.Text )
cmdInsert.Parameters.Add( "@partitaiva", SqlDbType.int).value=textpiva.text
cmdInsert.Parameters.Add( "@telefono", SqlDbType.int).value=texttelefono.text
cmdInsert.Parameters.Add( "@emailabbonato",textemail.text)
cmdInsert.Parameters.Add( "@dtcandidatura", SqlDbType.datetime).value=oggi
cmdInsert.Parameters.Add( "@des01",textnote.text)

dim param as sqlparameter
param = New SqlParameter()
param.ParameterName = "@idabbonato"
param.Direction = ParameterDirection.Output
param.Size = 50
cmdinsert.Parameters.Add(param)
Dim variabile as integer

Try

conn.Open()
variabile= cmdInsert.ExecuteNonQuery()
Catch exc as Exception
output.innerhtml = err.description & "<br>" & StrInsert
conn.Close()

Exit Sub

End Try


lbenaglia Profilo | Guru

>Questa e la stored che hai visto prima
Scusami, se la stored procedure viene creata senza errori, mi spieghi come può esserci un errore di sintassi nel codice T-SQL?!

>Questo e il codice:
>cmdInsert.Parameters.Add( "@ragionesociale", textragione.Text)
Sei proprio sicuro che questa sia la sintassi corretta del metodo Add?
http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.add.aspx

Prova a leggere questo thread per avere un esempio di codice:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12216

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Credo di avere trovato l'errore, secondo me, perche non ho dichiarato questo:

cmdinsert.CommandType = Commandtype.StoredProcedure

Dico dovrebbe perche adesso ho un errore su unatabella in relazione, per cui dovrebbe funzionare, o no secondo te?
Grazie

lbenaglia Profilo | Guru

>Dico dovrebbe perche adesso ho un errore su unatabella in relazione,
>per cui dovrebbe funzionare, o no secondo te?
Di professione non faccio l'indovino

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Si indovino funziona :D, solo che non recupera lo scope_identity..

lbenaglia Profilo | Guru

>Si indovino funziona :D, solo che non recupera lo scope_identity..
>
Sbaglierai qualcosa.
Ti rinnovo l'invito a seguire l'esempio che trovi in questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12216

Questo funziona

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Certo l'ho letto e l'ho riletto certamente sbaglio qualcosa, pero scusami se ti rompo le palle, ma se mi torna 0 lo scope vuol dire che non va a valorizzarmelo ti pare?
Grazie e scusa per il rompimento

lbenaglia Profilo | Guru

>Certo l'ho letto e l'ho riletto certamente sbaglio qualcosa,
>pero scusami se ti rompo le palle, ma se mi torna 0 lo scope
>vuol dire che non va a valorizzarmelo ti pare?
Eh si, ma non vedo come possa aiutarti

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Ok, pero scusa non ti sembra strano che funzioni tutto l'inserimento e non ritorni indietro quel valore li?
Intanto grazie

lbenaglia Profilo | Guru

>Ok, pero scusa non ti sembra strano che funzioni tutto l'inserimento
>e non ritorni indietro quel valore li?
No, per niente

>Intanto grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

flytouch Profilo | Junior Member

Grazie Lorenzo ho capito dove volevi portarmi per risolvere il problema.
Grazie ancora
Ciao (non alla prossima spero )
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5