Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Stored procedure e Xml
mercoledì 30 luglio 2003 - 15.01
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
farfalla
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 lug 2003 - 15:01
Salve,
avrei bisogno di inserire dei dati in una tabella, per questo utilizzo una stored procedure ,utilizzando una dll ,da noi creata , che richiama la SP, dal momento che i dati da passare alla SP sono molti avevo pensato di utilizzare l'XML.
Qualcuno può suggerirmi qualche esempio da consultare? o una strada alternativa.
Grazie :-)
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 30 lug 2003 - 16:22
Anche io mi aggiungo a Coach e ti chiedo ulteriori dettagli.
I tipi di file che devi inserire in che formato sono? Già in XML?
Tu vuoi procedere con un approccio basato più sulle classi del Framework oppure importare i dati tramite SQL Server direttamente?
Nel secondo caso puoi documentarti sulla guida di SQL Server che è completa e dettagliata e cercare le due Stored Procedure sp_xml_preparedocument e sp_xml_removedocument. Inoltre guarda anche all'istruzione T-SQL OPENXML che è molto fondamentale per inserire o estrarre dati.
Ciao
David
farfalla
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 lug 2003 - 16:37
ok ecco cosa devo fare ho un file .vb che contiene la seguente function
Public Function inserisciUtente(ByVal _utente As String,ByVal _utente1 As String , ByVal _utente2 As String,....) As SqlDataReader
Dim objCmd As SqlCommand
Try
objCmd = New SqlCommand("cmd_inserisciUtenteRegistrato", objConnection)
objCmd.CommandType = CommandType.StoredProcedure
If objConnection.State <> ConnectionState.Open Then
objConnection.Open()
End If
objCmd.Parameters.Add("@hdoc", _utente)
......
inserisciUtente = objCmd.ExecuteReader()
'objConnection.Close()
Catch ex As Exception
'Da gestire
Finally
End Try
End Function
poi dopo aver compilato il tutto e importato la dll generata nel mio progetto richiamo al click sul bottone tale funzione.
in questo modo
inserisciuTente(param1,param2,....)
Ora per evitare di passare tutti i parametri alla SP avevo pensato di usare una stringa xml.
Il mio problema è una volta generato lo stream xml nel mio progetto, quale è la sintassi asp.net per passare alla SP tale stream xml?
per maggior chiarezza vi invio anche il codice della sp
CREATE PROCEDURE dbo.cmd_inserisciUtenteRegistrato(@strXML varchar(8000))
AS
SET NOCOUNT ON
DECLARE @hdoc int
DECLARE @newId int
-- DECLARE @ReturnString varchar(50)
-- DECLARE @data as smalldatetime
--+--------------+----------------------------- Anagrafica -------------------------------------------------------------------------------------------------+
DECLARE @retrievedValues table (Login varchar(50),
Password varchar(50),
Cognome varchar(50),
Nome varchar(50),
Sesso char(1),
CodComuneNas varchar(6),
DataNascita varchar(50),
Email varchar(50),
ServizioMilitare varchar(50),
IndResidenza varchar(100),
CodComuneRes varchar(6),
CapRes char(5),
IndDomicilio varchar(100),
CAPDom char(5),
CodComuneDom varchar(6),
Telefono varchar(20),
Fax varchar(20) )
SELECT @newId = MIN(IdPersona+1 )
FROM Utenti
WHERE IdPersona+1 NOT IN (SELECT IdPersona FROM Utenti )
SET @newId = ISNULL( @newId, 1)
EXEC sp_xml_preparedocument @hdoc OUTPUT, @strXML
BEGIN TRAN
INSERT @retrievedValues
SELECT *
FROM OPENXML(@hdoc,'Root/Login',2)
WITH ( Login varchar(50) '.',
Password varchar(50) '.',
Cognome varchar(50) '.',
Nome varchar(50) '../Nome',
Sesso char(1) '../Sesso',
CodComuneNas varchar(6) '../CodComuneNas',
DataNascita varchar(50) '../DataNascita',
Email varchar(50) '../Email',
ServizioMilitare varchar(50) '../ServizioMilitare',
IndResidenza varchar(100) '../IndResidenza',
CodComuneRes varchar(6) '../CodComuneRes',
CapRes char(5) '../CapRes',
IndDomicilio varchar(100) '../IndDomicilio',
CAPDom char(5) '../CapDom',
CodComuneDom varchar(6) '../CodComuneDom',
Telefono varchar(20) '../Telefono',
Fax varchar(20) '../Fax' )
IF @@ERROR <> 0
BEGIN
GOTO ON_ERROR
END
INSERT INTO UTENTI (IdPersona, Login, Password, Cognome, Nome, Sesso, CodComuneNas, DataNascita, Email, ServizioMilitare, IndResidenza, CodComuneRes, CapRes, IndDomicilio, CAPDom, CodComuneDom, Telefono, Fax)
SELECT @newId, login, password, Cognome , Nome, Sesso, CodComuneNas, CONVERT(smalldatetime,DataNascita,105), Email, ServizioMilitare, IndResidenza, CodComuneRes, CapRes, IndDomicilio, CAPDom, CodComuneDom, Telefono, Fax
FROM @retrievedValues
--+--------------+----------------------------- Inserting records terminated -------------------------------------------------------------------------------------------------+
IF @@ERROR <> 0
BEGIN
GOTO ON_ERROR
END
COMMIT TRAN
SELECT 0 ErrorStatu
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 31 lug 2003 - 15:37
Ciao Farfalla,
credo di aver capito cosa vuoi fare, in pratica vuoi eliminare tutta la serie di parametri dalla Stored Procedure e utilizzarne solo uno magari di tipo nvarchar in cui passi tutta una stringa formato XML con all'interno tutti i valori?
Passando da ASP.NET o da .NET comunque a SQL puoi semplicemente aggiungere un parametro e passare una stringa. Secondo me però non è un metodo buono perchè una volta che la stringa XML arriva a SQL Server dovresti scompattarla e ricavare dalla struttura XML i dati.
Il problema è che in SQL Server non c'è a disposizione un vero e proprio DOM per operare su documenti XML e quindi dovresti arrangiarti in altro modo.
A mio avviso già il metodo che stai utilizzando è molto buono, anche se certamente può essere noioso passare numerosi parametri a una Stored Proc, sicuramente però è molto più chiara che passare una stringa XML.
Forse nella prossima versione di SQL chiamata Yukon ci sarà la possibilità di scrivere Stored Procedures sia in T-SQL che in un linguaggio .NET e quindi sarà probabile che ciò che vuoi fare sarà possibile.
Cosa ne pensi tu?
Ciao
farfalla
Profilo
| Newbie
6
messaggi | Data Invio:
gio 31 lug 2003 - 15:42
Cmq, sono riuscita a fare quello che volevo ho creato un varchar di 8000caratteri e tutto sembra funzionare correttamente.
Grazie cmq dell'aiuto
Torna su
Stanze Forum
Elenco Threads
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 !