Inserimento dato in tabella su sql

giovedì 08 maggio 2008 - 10.47

mame37 Profilo | Junior Member

buongiorno a tutti sono sempre io..sono riuscito a creare una connessione al mio database..devo inserire dei dati provenineti da un file txt all'interno di una tabella all'interno del database sql come posso fare? grazie a tutti per i possibili consigli

Lucifel Profilo | Junior Member

Questo è il codice che ti serve x eseguire un comando.

try { this.openConnection(); using (SqlCommand myCommand = new SqlCommand()) { //Costruisco il command delegato all'istruzione Sql myCommand.Connection = this.connection; myCommand.Transaction = this.transaction; myCommand.CommandText = sql; //Eseguo, e faccio la dispose degli oggetti myCommand.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } finally { this.closeConnection(); }


Considera che closeConnection è una funzione che chiude la connessione e openConnection è una funzione che apre la connessione.
sql è una variabile stringa che contiene la query di insert.

Spero ti sia servito.


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

totti240282 Profilo | Guru

e per la transazione non fai il commit o rollback ??.
C'è solo un capitano !!!!!!

Lucifel Profilo | Junior Member

Ah già il commit...
Questa è una funzione a cui gli devi passare la transazione e se sei dentro un ciclo fai il commit

in pratica

// Creo la transazione... e la assegno alla variabile "transazione" try { for ( ... ) { sql = ... // Stringa di insert funzioneDiPrima(sql, transazione); } transazione.Commit(); } catch (Exception ex) { transazione.Rollback(); }

O qualcosa del genere... non so se sei dentro un ciclo o dove sei, comunque è così che la uso io

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

mame37 Profilo | Junior Member

...

Lucifel Profilo | Junior Member

>Ho verificato e inserisce i dati dentro la tabella adesso ho
>un'altro piccolo problema ogni volta che faccio il debug dell'applicazione
>e inizia a scrivere i primi dati nella tabella. una volta che
>faccio ripartire il programma mi da l'errore
>Violation of PRIMARY KEY constraint mailbox'. Cannot insert
>poichè già i dati sono inseriti anche se solo il primo e quindi
>non pùò procedere con gli altri..quello che vi chiedo è come
>posso fare in caso il dato sia già presente continuare oppure
>sovrascriverlo per procedere con inserire tutti gli altri. grazie
>x gli eventuali suggerimenti

Non puoi. X sovrascrivere i dati devi usare un UPDATE e non un INSERT. L'insert aggiunge altre righe alla tabella. Le soluzioni sono 2
1) fai una query che ti restituisce il numero di righe (in questo caso solo 1) con quella chiave e se è 0 questo numero allora fai l'insert, altrimenti passi a quella successiva
2) dentro il tuo ciclo for fai un try catch e nel caso in cui faccia catch vuol dire che hai la tua violazione di primary key e tu non devi fare niente.

Però tra le 2 preferisco la prima...

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

Nerom Profilo | Newbie

Per ottenere il nuovo id in cui fare l'INSERT puoi usare questa funzione,
gli passi il nome della tabella, il nome della colonna e ti restituisce l'Id più alto
Data una determinata tabella ed una determinata colonna, ottiene l'id più alto Public Function Containdice(ByVal nomecol As String, ByVal nometab As String) 'Data una determinata tabella e colonna, ottiene l'id massimo registrato in quella tabella Dim idriga As Object Dim StringaConnessione As String = "La tua connessione al database" Dim conn As New SqlClient.SqlConnection() conn.ConnectionString = StringaConnessione Dim query As New SqlCommand query.CommandText = "Select MAX (" & nomecol & ") From " & nometab & "" query.CommandType = CommandType.Text query.Connection = conn conn.Open() idriga = query.ExecuteScalar conn.Close() Return (idriga) End Function

poi per ottenere il nuovo id ti basterà fare
idriga = Containdice("nome tabella","nome colonna") + 1
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