+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Passare informazioni da Dataset a Database

  1. #1
    gl_malinverni non è in linea Scolaretto
    Ciao a tutti, ho un problema che non se si può superare.

    Ho caricato da un database una tabella in un dataset e adesso vorrei travasarne il contenuto in una tabella di un altro database.

    Prima domanda è possibile?

    Se possibile, potreste indicarmi cortesemente il modo per poterlo fare, ci sto sbattendo la testa da un po' ma non riesco a venirne a capo.

    Questo è il codice che uso per caricare la tabella nel dataset:

    
            Dim sqlquerycities As String = "SELECT * from irtt.cities;"
            Dim PostgreSQLadp As NpgsqlDataAdapter
            Dim connectPostgreSQL As New NpgsqlConnection(strConn)
            Dim DSirttCities As DataSet '= New DataSet()
            DSirttCities = New DataSet()
    
            Try
                connectPostgreSQL.Open()
                PostgreSQLadp = New NpgsqlDataAdapter(sqlquerycities, connectPostgreSQL)
                PostgreSQLadp.Fill(DSirttCities, "cities")
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            Finally
                If connectPostgreSQL.State = ConnectionState.Open Then
                    connectPostgreSQL.Close()
                End If
            End Try
    
           '  Verifico se nella tabella ci sono dati 
    
            Try
                Dim table As DataTable = DSirttCities.Tables("cities")
                If table.Rows.Count > 1 Then
            
               '
               '  Qui volevo inserire il codice per travasare il contenuto dentro un altro database 
               '
    
                Else
                    MsgBox("tabella vuota")
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            MsgBox("fine")
    
    Mi potete aiutare?

    Grazie

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    INSERT INTO TabellaDestinazione (elenco campi) IN DatabaseDestinazione SELECT elenco campi FROM TabellaPartenza
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    gl_malinverni non è in linea Scolaretto
    Ciao Brontolo e grazie per l'interessamento, se ho capito bene nella stringa sql per l'accesso al database dovrei scrivere

    
    dim stringaconnessione as string = "INSERT INTO cities_database2 *    ' seleziono la tabella del database target con tutti i campi 
                                                            IN [stringa di connessione al database source] 
                                                            SELECT *                                 ' seleziono tutti i campi
                                                            FROM cities_database1"              ' seleziono la tabella del database source
    
    Ho pensato all'utilizzo del DataSet perchè non ero riuscito a farla funzionare, avevo già pensato ad una cosa del genere.

    Se mi confermi che la sintassi è giusta, probabilmente non sono riuscito a determinare la corretta striga di connessione al database source, si tratta di un database PostgreSql.

    Per collegarmi normalmente al database PostgreSql uso questa stringa di connessione con la quale ho accesso in lettura al database ed è funzionante:

    
    dim strConn As String = "Server=xxx.xx.xx.xx;User Id=utente;Password=password;Database=miodb;"
    
    devo copiare la stessa stringa di connessione all'interno delle parentesi quadre del comando SQL?

    
    dim stringaconnessione as string = "INSERT INTO cities_database2 * 
                                                            IN [Server=xxx.xx.xx.xx;User Id=utente;Password=password;Database=miodb] 
                                                            SELECT *                                
                                                            FROM cities_database1;"
    

    Grazie

  4. #4
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    No. La stringa di connessione non c'entra niente con la query. Però, scusa, ma senza un minimo di conoscenze di base non andrai molto lontano. Come spesso ricordiamo, non basta copia-incollare righe di codice misterioso.
    ℹ️ Leggi di più su Brontolo ...

  5. #5
    gl_malinverni non è in linea Scolaretto
    Si lo so perfettamente, non sono un programmatore ed è da poco che mi sono avvicinato al VB.net, prediligo il php ma in questo caso per agevolare l'attività lavorativa del mio gruppo non posso utilizzarlo e quindi ne ho approfittato per fare la conoscenza di questo linguaggio. Sto approfondendo con la lettura di un manuale, ma le tempestiche di studio e quelle lavorative non vanno di pari passo...
    Speravo di mettere in piedi qualcosa di funzionate ora e di migliorarlo in seguito quando avrò delle basi più solide.

    Detto questo se mi puoi essere di aiuto te ne sarò grato.

    Riprendento quello che mi hai scritto inizialmente:

    INSERT INTO TabellaDestinazione (elenco campi) IN DatabaseDestinazione SELECT elenco campi FROM TabellaPartenza

    Io l'ho interpretato in questo modo:

    Copio i campi della tabella del database target con i campi della tabella del database source, quindi in qualche modo mi devo collegare ai due database, uno in lettura e l'altro in scrittura o sbaglio?

    Grazie

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Il tuo approccio iniziale (DataSet, DataTable, ...) fa pensare che intendevi copiare un record alla volta: questo non è necessario, l'Sql (studialo!) ha da tempo superato questo sistema.
    Devi aprire due connessione: una relativa al database di input e l'altra relativa al database di output. Poi esegui una sola query (come quella che ti ho indicato). Cerca notizie sull'uso del metodo ExecuteNonQuery.

    A prescindere da quanto sopra, ti pongo una, anzi due, domanda (che pongo spesso): perché hai due database? Perché devi copiare un'intera tabella dall'uno all'altro? Vuoi scommettere che non ci sono validi motivi?
    ℹ️ Leggi di più su Brontolo ...

  7. #7
    gl_malinverni non è in linea Scolaretto
    No, in realtà la possibilità di copiare un record alla volta l'avevo scartata considerando che le tabelle hanno più di mille righe... stavo pensando all'utilizzo del metodo fill/get.

    Cercherò di capire cosa intendi con l'appetura di due database...

    Apro una connessione con oledb sul database target (Access in locale.mdb)
    Apro una connessione con Npgsql sul database source (PostgreSQL sul server xxx.xx.xx.xx)

    Eseguo un command ExecuteNonQuery sul database Access in scrittura utilizzando

    
    dim stringaconnessione as string = "INSERT INTO cities_target *  
                                                            IN  
                                                            SELECT *
                                                            FROM cities_source"
    
    Scusa ma non capisco cosa devo inserire dopo la clausola IN...

    Il mio problema nasce dal fatto che il 90% delle infornazioni risiedono su un server (database PostgreSQL) gestito da una società estena. La mia azienda ha un numero di accessi limitati al database e in sola lettura.
    Per agevolare alcune attività lavorative del mio gruppo sto cercando di realizzare un programma che faccia alcune cose per noi ripetitive nell'arco della giornata, ma per fare ciò devo integrare alcune informazioni che risiedono su database PostgreSQL con altre che verranno inserite/modificate/cancellate nel corso delle attività; da qui nasce il secondo database Access accessibile a tutti i miei colleghi.
    Quindi ho pensato, avendo io l'accesso al database PostgreSQL di aggiornare periodicamente alcune tabelle dal database di sola lettura PostgreSQL al database in lettura e scrittura Access.

  8. #8
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    INSERT INTO <nome della tabella target> ( <elenco dei campi separati da virgole> ) IN <database target> ...
    https://support.microsoft.com/it-it/...1-e9f245ab8d24
    ℹ️ Leggi di più su Brontolo ...

  9. #9
    gl_malinverni non è in linea Scolaretto
    Grazie per il link, ma è la 20 esima volta che lo vedo...
    Ho tratto da li la mia prima ispirazione ma non sono mai riuscito a farla funzionare, i motivi potrebbero essere mille.
    Ti anticipo includendo anche le mie scarse conoscenze tra i motivi principali....

    Comunque se mi confermi che la strada è quella ci sbatterò ancora un po' la testa, se non ne verrò a capo tornero qui a chiedere altre informazioni.

    Grazie per il tuo interessamento

  10. #10
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Non usare l'asterisco e metti l'elenco campi tra parentesi. Mostra la query che stai usando.
    ℹ️ Leggi di più su Brontolo ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Creare pagine web con informazioni da database
    Da Zakkmo nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 11-05-2016, 10:51
  2. Risposte: 2
    Ultimo Post: 11-11-2015, 17:28
  3. Richiesta informazioni su pagina web e Database
    Da zymarco nel forum HTML, CSS e JavaScript
    Risposte: 1
    Ultimo Post: 12-05-2013, 11:52
  4. Risposte: 5
    Ultimo Post: 25-05-2009, 13:25
  5. informazioni database
    Da Diabolik nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 07-11-2005, 21:32