Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Vb.NET2005]Gestione della connessione

    Ciao a tutti, mi trovo difronte ad un problema.
    Purtroppo la mia poca praticità non mi consente ( spero solo per ora ) di venirne a capo.

    Vi spiego subito il problema.
    Ho un form chiamato dati il quale richiama due classi
    la prima è classecliente.vb la seconda e contatori.vb.

    Le classi impostano le proprietà e i metodi che poi nel form dati io mi piglio.
    Dentro le classi sono presenti le query al database.

    il mio problema è la connessione.
    Ovviamente tutta la procedura di query al database ( uso la modalità connessa )
    devono avere impostato il "command.Connection" che non è nientaltro che la stringa di connessione al database...
    ora, quando in debug "richiamo", tramite il form dati, o la classe cliente o quella contatori...
    ogni volta si apre e si chiude la connessione al database...

    ho pensato quindi di inserire nel "formload" del form dati la connessione al database...
    con l'apertura .open()
    nel formclose quindi ho messo il .close() e il .dispose()

    ora, come faccio a dire alla classi clienti e contatore che la connessione è aperta nel form dati ??

    grazie...

  2. #2
    Utente di HTML.it L'avatar di Mychy
    Registrato dal
    Oct 2000
    Messaggi
    794
    Devi portarti dietro la connessione come byRef

  3. #3
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    potresti dare in modo che nel costruttore della classe dove fai le tue query prenda in input la stringa di connessione al db e aprla la connessione a patto che appena eseguita la query tu la chiuda...


    Classe SqlConn(io in un prg ho fatto cosi)

    Public Sub New(ByVal StringDb As String)

    If StringDb = "" Then
    Else
    Dim MyConn As String
    MyConn = StringDb
    con = New SqlConnection
    con.ConnectionString = StringDb
    'con.ConnectionString = "server=Autoserver;Trusted_Connection=yes; database= TestLineee"
    comand = New SqlCommand
    Try
    con.Open()
    me.ConnectionState =True
    Catch ex As Exception
    Me.ConnectionState = False
    End Try
    End If
    End Sub
    Public Property Query() As String
    Get
    Return strQuery
    End Get
    Set(ByVal Value As String)
    strQuery = Value

    End Set
    End Property

    Public Sub Close()
    con.Close()
    End Sub
    Public Function ExecuteQuery() As Boolean
    comand = New SqlCommand(Query, con)
    'comand.CommandText = Query
    Try
    comand.ExecuteNonQuery()
    Return True
    Catch ex As Exception
    Return False
    End Try
    End Function


    es...
    dim sqlconn as new sqlconnection(Driver=(SQL Server);Server=myServerAddress;Database=myDataBase ;Uid=myUsername;Pwd=myPassword;
    sqlconn.query = myquery
    sqlconn.executequery
    sqlconn.close
    La mia pazzia continua a prosciugare la mia anima

  4. #4
    Grazie amici...
    ora mi metto all' opera...

    vi faccio sapere il risultati..grazie ancora

  5. #5
    Originariamente inviato da M@LKAV
    potresti dare in modo che nel costruttore della classe dove fai le tue query prenda in input la stringa di connessione al db e aprla la connessione a patto che appena eseguita la query tu la chiuda...


    Classe SqlConn(io in un prg ho fatto cosi)

    Public Sub New(ByVal StringDb As String)

    If StringDb = "" Then
    Else
    Dim MyConn As String
    MyConn = StringDb
    con = New SqlConnection
    con.ConnectionString = StringDb
    'con.ConnectionString = "server=Autoserver;Trusted_Connection=yes; database= TestLineee"
    comand = New SqlCommand
    Try
    con.Open()
    me.ConnectionState =True
    Catch ex As Exception
    Me.ConnectionState = False
    End Try
    End If
    End Sub
    Public Property Query() As String
    Get
    Return strQuery
    End Get
    Set(ByVal Value As String)
    strQuery = Value

    End Set
    End Property

    Public Sub Close()
    con.Close()
    End Sub
    Public Function ExecuteQuery() As Boolean
    comand = New SqlCommand(Query, con)
    'comand.CommandText = Query
    Try
    comand.ExecuteNonQuery()
    Return True
    Catch ex As Exception
    Return False
    End Try
    End Function


    es...
    dim sqlconn as new sqlconnection(Driver=(SQL Server);Server=myServerAddress;Database=myDataBase ;Uid=myUsername;Pwd=myPassword;
    sqlconn.query = myquery
    sqlconn.executequery
    sqlconn.close
    ma questa apre e chiude la connessione ad ogni query...nelle classi...
    non è il mio caso... nel senso che preferisco aprire la connessione al load del form
    e chiuderla al evento close del form...
    questo perchè utilizzo un odbc connection... che mi apre un servizio di Sybase Anywhere...
    se apro e chiudo questo servizio ad ogni query... mi rallenta e non di poco l'applicazione...

  6. #6
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    beh non e detto che tu non possa personalizzare l'esempio che ti postato a tuo piacimento
    La mia pazzia continua a prosciugare la mia anima

  7. #7

  8. #8
    [Public Property Query() As String
    Get
    Return strQuery
    End Get
    Set(ByVal Value As String)
    strQuery = Value

    End Set
    End Property
    StrQuery da dove salta fuori??

  9. #9
    nel form dati....
    ho inserito sopra un nuova classe... come mi hai suggerito tu..

    Public Class Sql

    'mi ricavo il nome del mio DSNName
    Dim DsnName As New FrmMain

    'è il form che alla connessione chiede user e password
    Dim UserPsw As New LoginForm1
    Dim user As String = UserPsw.User
    Dim password As String = UserPsw.Password

    Dim strQuery As String

    Dim conn As New OdbcConnection
    Public Sub New(ByVal StringDb As String)

    'apri il form che mi permette di inserire user e password
    UserPsw.ShowDialog(frmDati)

    Dim MyConn As String
    MyConn = StringDb
    conn = New OdbcConnection
    conn.ConnectionString = "Dsn=" & DsnName.valore & ";Uid=" & user & ";Pwd=" & password
    Dim value As ConnectionState
    Try
    conn.Open()

    value = ConnectionState.Open

    Catch ex As Exception
    value = ConnectionState.Closed
    MessageBox.Show(" Errore di connessione al Database. Controllare i settaggi dell' ODBC ", "Error Database Comunication", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    End Try

    End Sub

    Public Property Query() As String
    Get
    Return strQuery
    End Get
    Set(ByVal value As String)
    strQuery = value

    End Set
    End Property

    End Class


    ' classe form dati
    Public Class frmDati

    .....

    End class

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.