Salvare un intero datatable creato a runtime su un DB ACCESS

martedì 10 febbraio 2009 - 16.13

giobaxx Profilo | Junior Member

...hellpppp....

Devo copiare una tabella di un DB access...per poi aggiungerci una colonna per poi copiarla su un'altro database....

Ora io ho creato il DATATABLE ho aggiunto la colonna.....lo ho riempito dei dati e vedendoli su di un datagridview direi che è tutto OK.....ora c'è un modo per salvare l'intero DATATABLE in un database(vuoto) già creato con una tabella che ha precisa precisa la struttura del Datatable??

Jeremy Profilo | Guru

Certo che puoi farlo,
Ora non so se sia il metodo più corretto ma, proprio in supporto ad un utente di questo forum, ho creato una piccola applicazioncina che fa esattamente quello che vuoi fare tu.
Io ho risolto ciclando tutte le righe del datatable e prelevando il valore di ogni campo per aggiungerlo ai parametri(che spero tu stia usando).

Quindi:
For Each row In Ds.Tables(0).Rows command.commandtext=tua stringa di insert par(0)= new parameter with {.value=row.item(0),etc....etc....etc...} command.executenonquery next


Facci sapere...
Ciao

giobaxx Profilo | Junior Member

ciao!!!..scusa ritardo ma mi sono rimesso a riguardare il codice solo oggi........ho provato a fare una cosa del genere:

// nota bene sono ben 27 colonne!!!!!
PRESUPPOSTO
HO CARICATO UN DATATABLE(DT) CON DATI DI UNA TABELLA DI UN DB, CI HO AGGIUNTO UNA COLONNA ED HO SCRITTO SU TALE COLONNA IL DATO NECESSARIO...ORA DEVO SALVARE IL TUTTO SU UNA TABELLA DI UN NUOVO DB(GIà ESISTENTE MA VUOTA) CHE HA LA STRUTTURA DEL DATATABLE......

CnTO è LA STRINGA DI CONNESSIONE DEL DB SU CUI ANDRA' COPIATO IL DATATABLE
InsertDBTO è LA STRINGA DI INSERIMENTO DEL COMMAND;

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

MI DA IL SEGUENTE ERRORE "Syntax error in INSERT INTO statement." MA A ME NON SEMBRA CI SIANO ERRORI NELLA STRINGA DI INSERIMENTO....ED I CICLI MI SEMBRA CHE FUNZIONINO......

QUALE PUò ESSERE L'ERRORE???...SE C'è BISOGNO HO FATTO UN PICCOLO PROGETTINO DI PROVA E LO POSSO ALLEGARE PERCHè PROPRIO NON CI ESCO.....NON CAPISCO PROPRIO DOVE CAPPELLO!!!

Jeremy Profilo | Guru

Ciao Giobaxx.
Hai detto che ti da errore di sintassi nella stringa di INSERT.....invii il codice per controllarlo.....e poi cancelli proprio la parte dove potrebbe essere l'errore?!?!?!
Comunque sia, l'errore dovrebbe essere che usi una qualche parola riservata come campo della tabella.

Facci sapere....
Ciao

giobaxx Profilo | Junior Member

:-)))...scusa ho fatto un pò di casino...cerco di essere più chiaro...ho provato a fare un miniprogetto con le stesse caratteristiche......

database originale
tbluser [nome][cognome][via]

database destinazione
tbluser [nome][cognome][via][codice]

la colonna codice è quella che ho aggiunto nel datatable e riempito ciclando sul datatable stesso, e che poi vorrei salvare sul database di destinazione.

l'errore è lo stesso:
Errore di sintassi nell'istruzione INSERT INTO.
error code: -2147217900
quando esegue cmdWrite.ExecuteNonQuery();

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

Jeremy Profilo | Guru

Ciao Giobaxx
Allora .... 3 cose:
1) Non conosco bene la sintassi del c#....ma sei sicuro di quel @ all'inizio della stringa???
2) Se sei sicuro di quel @....prova a racchiudere il campo codice tra parentesi quadre.
3) Elimina quel ; alla fine della stringa.

In definitiva la stringa potrebbe essere così:

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

Facci sapere....
Ciao

giobaxx Profilo | Junior Member

LA SINTASSI è CORRETTA IN C# ANCHE SE CI SONO VARI MODI PER SCRIVERE LA STRINGA INSERT A QUANTO HO CAPITO........
un errore lo ho trovato ed era sulla parola VALUE CHE INVECE E' VALUES...E LA COSA SUL PROGETTINO DI PROVA HA FUNZIONATO....
ho riprovato a fare la stessa cosa sul mio vero progetto(la tabella con ben 27 colonne) con la stessa sintassi...ma niente stesso errore......

poi ho risolto aprendo un'altro progetto e facendo generare una stringa INSERT AL DESIGNER..la ho copiata e funziona...ma francamente non sono ancora riuscito a capire dove stava l'errore di sintassi....
cmq il designer la scrive così:

string insert_string = @"INSERT INTO `TABELLA` (`colonna1`, `colonna2`, `colonna3`, `colonna4`, ......................................... `Colonna27` ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";

MISTERO
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5