>fino ad oggi ho sempre usato access con visual.net con i classici
>componenti adattatore e dataset facendo delle query tipo select
>nome from anag where '"& textbox1.text &"' .
>Adesso sono passato a vb2005, ho creato db con sql server 2005
>creo il table adapter e il dataset , reieco a fare l'inserimento
>di nuove record ma non riesco a fare le query di confronto come
>facevo prima, mi sapete dire come fare.
Ciao!
Il modo di operare che hai sempre seguito, è piuttosto pericoloso.. dai infatti via libera ai malintenzionati..
La concatenazione dei valori rende possibile quello che in gergo si chiama SQL injection.
Chi naviga potrebbe creare dei comandi SQL tali da modificare o anche distruggere (se la sicurezza sul database non è stata configurata correttamente) la tua base dati. Passando a SQL Server hai la possibilità di utilizzare strutture che ti permettono di evitare questo problema. Ad esempio ci sono le Stored Procedure, vere e proprie procedure che, oltre che consentirti logiche di programmazione, ti permettono un maggiore livello di sicurezza, evitando comunque il SQL injection.
leggiti questi link
Stored Procedure Basics
http://msdn2.microsoft.com/en-us/library/ms191436.aspx
CREATE PROCEDURE
http://msdn2.microsoft.com/en-us/library/ms187926.aspx
>
>
>ad esempio inserisco l'anagrfica di un cliente mario rossi ,
>vorrei creare una query di ricerca per trovare se nel db e gia
>presente un mario rossi per non farmelo inserire 2 volte
Passando alla tua stored procedure i dati (come ad esempio il nome/cognome) puoi pensare di fare al suo interno una cosa simile a questa:
immagina di avere una tabella come la seguente (molto semplificata):
CREATE TABLE Anagrafica
(
Id int IDENTITY(1,1) NOT NULL,
Nome varchar(30) NOT NULL,
Cognome varchar(50) NOT NULL,
DataNascita smalldatetime NOT NULL
)
ed ora la stored procedure:
CREATE PROCEDURE proc_InsertUtente
@Nome varchar(30),
@Cognome varchar(50),
@DataNascita smalldatetime
AS
BEGIN
IF NOT EXISTS (SELECT * FROM Anagrafica WHERE Nome = @Nome AND Cognome = @Cognome)
BEGIN
INSERT INTO Anagrafica (Nome, Cognome, DataNascita)
VALUES (@Nome, @Cognome, @DataNascita)
END
ELSE
RAISERROR 50000 'Nome già presente in tabella Anagrafica'
END
questo è un semplice esempio di come gestire il tuo problema..
Alx81 =)
http://blogs.dotnethell.it/suxstellino