Problema sql per insert

martedì 22 novembre 2005 - 10.13

adry_tssj Profilo | Newbie

Ciao a tutti!
Ho un problema in quanto in una pagina .aspx l'utente può inserire un nuovo articolo sul database (SqlServer), ma se l'articolo esiste già non mi deve permettere l'inserimento...
Ho provato a fare una query di questo genere:
"select count(Articolo) from Magazzino where Articolo='" & NewArticolo.text & "'"
e a stampare il risultato a video, ma sia che l'articolo è già presente, che in caso contrario, la query mi dà sempre come risultato -1 ... Come è possibile??
Qualcuno mi può aiutare a capire e ad attuare il controllo sopra specificato?

Grazie Mille!

Brainkiller Profilo | Guru

>Ciao a tutti!
>Ho un problema in quanto in una pagina .aspx l'utente può inserire
>un nuovo articolo sul database (SqlServer), ma se l'articolo
>esiste già non mi deve permettere l'inserimento...
>Ho provato a fare una query di questo genere:
>"select count(Articolo) from Magazzino where Articolo='" & NewArticolo.text

Allora, tanto per cominciare se stai usando SQL Server ti consiglio di procedere se non l'hai fatto alla scrittura di codice T-SQL in Stored Procedure piuttosto che scrivere tutto il codice di gestione dati in C# o VB.NET.

Seconda cosa, apri il Query Analyzer e prova ad inserire la Query e a lanciarla. Vedi che numero ti restituisce dovrebbe darti di solito 0 o 1. Prima di passare NewArticolo.Text applica una cosa di questo tipo:

where LOWER(Articolo)='" & NewArticolo.Text.ToLower()

in questo modo viene fatto un confronto fra lettere minuscole ed evitiamo un potenziale problema.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

lbenaglia Profilo | Guru

>Ho un problema in quanto in una pagina .aspx l'utente può inserire
>un nuovo articolo sul database (SqlServer), ma se l'articolo
>esiste già non mi deve permettere l'inserimento...
>Ho provato a fare una query di questo genere:
>"select count(Articolo) from Magazzino where Articolo='" & NewArticolo.text
>& "'"
>e a stampare il risultato a video, ma sia che l'articolo è già
>presente, che in caso contrario, la query mi dà sempre come
>risultato -1 ... Come è possibile??
>Qualcuno mi può aiutare a capire e ad attuare il controllo sopra
> specificato?

Ciao adry_tssj,

non ho capito, la tabella Magazzino non può avere 2 articoli con lo stesso nome?!
Se questa singolare regola è valida è sufficiente definire un constraint UNIQUE sulla colonna Articolo in questo modo SQL Server ti solleverà una eccezione nel caso in cui tu vada ad inserire un articolo già presente.

Lato client puoi ciclare la collection SqlErrorCollection per intercettare l'eccezione:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlErrorCollectionClassTopic.asp

Ciao!
>
>Grazie Mille!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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