Vb2008 express - Classi e database

martedì 24 novembre 2009 - 18.28

scremo Profilo | Newbie

Ciao a tutti,
sono alle prime battaglie con VB 2008 , arrivando dal mondo AS400, ho notato che è un bel cambiamento.
il problema è questo : creato un piccolo db con la gestione espolra data base volevo creare una classe contatti (come la tabella del Db) con i metodi Salva, Apri connessione, Chiudi connessione.

Naturalmente richiamati da un pulsante Conferma di una form che andrà a scrivere i dati nel db .mdf
Ho un problema di dichiarazioni variabili , questo è il codice della classe metodo SALVA:
Public Sub Salva()
Dim QuerySql As String

Dim ComandoSql As New SqlCommand

ComandoSql = New SqlCommand(QuerySql, objconnection)
ComandoSql.ExecuteNonQuery()

If ondb = False Then
QuerySql = "INSERT INTO TbContatti (Indirizzo,Ragione sociale) VALUES ("
QuerySql = QuerySql & "’" & indirizzo & "’,"
QuerySql = QuerySql & "’" & ragione & "',"
End If

End Sub

mentre questo è quello del metodo Apriconnessione

Public Sub apriConnessione()
Dim objconnection As New SqlConnection
objconnection = New SqlConnection()
objconnection.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documenti\CCRM.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
objconnection.Open()
End Sub

Però nel metodo Salva la variabile objconnection la indica come non dichiarata (essendo all'interno del metodo Apri) . Come posso farla vedere anche dal metodo salva?
grazie a tutti

Teech Profilo | Expert

Prima cosa, se la variabile deve essere valida a livello di classe non devi dichiararla dentro al metodo... Lo Scope della tua variabile è solo all'interno del metodo

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Nell'altro metodo il problema è che esegui il command prima di averne inserito la logica

Dim ComandoSql As New SqlCommand ComandoSql = New SqlCommand(QuerySql, objconnection) 'ComandoSql.ExecuteNonQuery() <---NON QUI If ondb = False Then QuerySql = "INSERT INTO TbContatti (Indirizzo,Ragione sociale) VALUES (" QuerySql = QuerySql & "’" & indirizzo & "’," QuerySql = QuerySql & "’" & ragione & "'," End If ComandoSql.ExecuteNonQuery() '<--- QUI
In ultimo, per creare dei Command, soprattutto se usi SQL ti consiglio di dare un occhio all'utilizzo dei parametri, ti risparmieranno tanti mal di pancia e sono sicuramente più performanti e sicuri.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

scremo Profilo | Newbie

Grazie mille.
Problema risolto
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