Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    86

    [VS2008] Connessione ed estrazione dati da DB2

    Ciao a tutti,

    sto utilizzando VS2008 e devo connettermi ed estrarre dei dati da un db di DB2.
    Ho provato ad utilizzare due strade:
    1)connessione attraverso Odbc
    2)connessione utilizzando la libreria IBM.data.Db2.dll ed estrazione dati.

    Caso 1: Eseguendo questo codice non riesco ad aprire la connessione al db.

    codice:
    Public Sub ConnessioneDB()
            Dim db_connessione As New OdbcConnection()
            Dim connect As Boolean
            Dim string_connection As String
    
            connect = False
            lblMessage.Visible = False
    
            'connessione al db.
            string_connection   
                         "Server=server_name;DSN=name;UID=xxxx;PWD=yyyyy;"
    
            Try
                db_connessione.ConnectionString = string_connection
                db_connessione.Open()
                connect = True
                lblMessage.Visible = True
                lblMessage.Text = My.Resources.ResourceMessage.SuccessOperation
                db_connessione.Close()
            Catch
                connect = False
                btnEntra.Visible = False
                lblMessage.Visible = True
                lblMessage.Text = My.Resources.ResourceMessage.NegatedOperation
            End Try
        End Sub
    Caso 2: Eseguendo questo codice riesco a fare la connessione al db ma non riesco ad estrarre nulla.

    p.s. dgrRubrica è una datagridview

    Connessione:
    codice:
    Public Sub ConnessioneDB()
            Dim connect As Boolean
            Dim string_connection As String
            Dim db2_connessione As New DB2Connection()
            connect = False
            lblMessage.Visible = False
    
            'connessione al db.
            string_connection = "Server=server_name;Database=name;UID=xxxx;PWD=yyyy;"
            db2_connessione.ConnectionString = string_connection
    
            Try
                db2_connessione.Open()
                connect = True
                lblMessage.Visible = True
                lblMessage.Text = My.Resources.ResourceMessage.SuccessOperation
                db2_connessione.Close()
            Catch
                connect = False
                btnEntra.Visible = False
                lblMessage.Visible = True
                lblMessage.Text = My.Resources.ResourceMessage.NegatedOperation
            End Try
        End Sub

    Estrazione dati:

    codice:
    Private Sub btnEstrai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEstrai.Click
            Dim query_string As String = "Select * From USER_LIST"
            Dim ds As DataSet = New DataSet()
            Dim db2_connessione As New DB2Connection()
            Dim string_connection As String
                                         = "Server=server_name;Database=name;UID=xxxx;PWD=yyyy;"
            db2_connessione.ConnectionString = string_connection
            Dim cmd As DB2Command = New DB2Command(query_string, db2_connessione)
            Dim cmdd As DB2DataAdapter = New DB2DataAdapter()
            db2_connessione.Open()
            cmdd.SelectCommand = cmd
            cmdd.Fill(ds)
            db2_connessione.Close()
            dgrRubrica.DataSource = ds
    End Sub
    Grazie

    Rick

  2. #2
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    Vediamo se posso aiutarti cosi.
    prima ti scrivo i punti che secondo me sono importanti per migliorare il tuo codice.

    1. La classe Db2connection deve essere dichiarata all'interno della classe e non nella Sub connection.
    2. per assicurarti che la connessione sia avvenuta con successo puoi usare la proprietà della classe Db2Connection.State che ti indica lo stato attuale della connessione.
    Open.
    Close.
    Broken
    ecec...
    3. nell'istruzione Try Cath ti consiglio di utilizzare l'eccezzione della classe che stai utilizzando cosi hai modo di controllare l'errore che non ti permette di aprire una connessione oppure di estrapolare dei dati.

    Ti posto il codice cosi come lo farei io ipotizzando che sia all'interno di una classe FORM1 spero possa esserti utile.

    codice:
    Public Class Form1
        
       Dim strConnection as string
       Dim con as DB2Connection
       Dim cmd as DB2Command
       Dim adp as DB2DataAdapter
       Dim ds as Dataset
    
    
    Public Sub Con()
    
         strConnetction = "Server=server_name;DSN=name;UID=xxxx;PWD=yyyyy;"
    
        con = new Db2Connection
        con1.connectionstring =  strConnection 
        cmd = new DB2command
        cm1.connection = con
    
          Try
    
            con.Open()
            ''' se vuoi visualizzare lo stato della connessione 
            msgbox(con.state.tostring)
    
          Catch ex As Db2Exception
            '' se vuoi visualizzare l'errore
            msgbox(ex.message)
           End Try
    
    End Sub
    
    
    Public Sub Estrai()
    
      Try
        adp = new DB2DataAdapter("Select * From USER_LIST ",con)
    
        ds = new Dataset()
       
        adp.fill(ds,"USER_LIST")
    
        '' se nel form hai un datagridview per visualizzare i dati
         
           datagridview1.datasource = ds.Table("USER_LIST")
    
      Catch ex As Db2Exception
            '' se vuoi visualizzare l'errore
            msgbox(ex.message)
           End Try
    
        
    
    End Sub
    
    
    End Class

    fammi sapere se funziona.
    La mia pazzia continua a prosciugare la mia anima

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    86
    Innanzitutto grazie mille M@LKAV per avermi risposto ed avermi dato consigli utili per il mio problema.

    Gira e frulla ne ho fatte di ogni ed alla fine sono riuscito a raggiungere lo scopo del mio applicativo. In sostanza ho fatto ciò:

    - controllare la versione del mio db2 sul pc client e sul server dov'è il db.
    - sicuramente modificare il seguente codice

    codice:
            db2_connessione.Close()
            dgrRubrica.DataSource = ds
    in

    codice:
            dgrRubrica.DataSource = ds
            db2_connessione.Close()

    Inoltre anche con la connessione al db, utilizzando l' ODBC, risultava corretta; verifica che peraltro ho verificato tra i tanti controlli eseguiti. Il fatto è che sicuramente prima devo assegnare i dati alla datagridview e poi eseguire la close della connessione.

    Ciao a tutti!!!

  4. #4
    Utente di HTML.it L'avatar di M@LKAV
    Registrato dal
    Jan 2006
    Messaggi
    215
    Originariamente inviato da Rik142
    Innanzitutto grazie mille M@LKAV per avermi risposto ed avermi dato consigli utili per il mio problema.
    Di nulla.
    La mia pazzia continua a prosciugare la mia anima

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.