Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
PROBLEMA CON INSERT DA CODICE
sabato 15 novembre 2008 - 08.38
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
wally74
Profilo
| Newbie
24
messaggi | Data Invio:
sab 15 nov 2008 - 08:38
Salve a tutti,
Ho un problema che non riesco a risolvere (vedi thread: ThreadID=26551).
In ultima analisi, da codice riesco ad accedere a excel, e inviare i dati alla tabella di Sql Server 2005 Express.
Faccio questo attraverso un'interfaccia dove l'utente scegli il foglio di excel (sheet1, ...), i dati di excel vengono caricati in una datagridview, dopo di che avviene il trasferimento su Sql Server. Al primo passaggio non ci sono problemi.
Ma quando si sceglie un'altra cartella (sono tutte uguali nella struttura), benché i dati presenti nella datagridview vengano aggiornati, in Sql Server non avviene alcuna modifica; vengono visualizzati i soli dati del primo inserimento.
Ecco il codice di inserimento:
private void button1_Click(object sender, EventArgs e)
{
string sheetName = "[" + txtSheet.Text + "$]";
string odbConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0; Excel 12.0 Xml;Database=" + dbName + ";HDR=YES";
string odbCmdStr = "SELECT [CAMPO 1], [CAMPO 2] FROM " + sheetName;
System.Data.OleDb.OleDbConnection odbConn = new System.Data.OleDb.OleDbConnection(odbConnStr);
System.Data.OleDb.OleDbCommand odbCmd = new System.Data.OleDb.OleDbCommand(odbCmdStr, odbConn);
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(odbCmd);
DataTable table = new DataTable("TBL");
odbConn.Open();
adapter.Fill(table);
odbConn.Close();
dataGridView1.DataSource = table;
dbPopulation();
txtSheet.Focus();
txtSheet.SelectAll();
table.AcceptChanges();
}
private void dbPopulation()
{
DateTime[] date = new DateTime[dataGridView1.RowCount - 1];
int[] ctr = new int[dataGridView1.RowCount - 1];
object[] oCells = new object[(dataGridView1.RowCount - 1) * 2];
int i = 0;
int j = 0;
int contaRiga = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
contaRiga++;
foreach (DataGridViewCell cell in row.Cells)
{
oCells[i] = cell.Value;
i++;
}
date[j] = (DateTime)oCells[i - 2];
ctr[j] = Int32.Parse(oCells[i - 1].ToString());
j++;
if (contaRiga == dataGridView1.RowCount - 1)
break;
}
string destinationDB = txtDBDestination.Text;
string connStr = @"Data Source=[datasource]; Initial Catalog=" +destinationDB+ "; User Id=uid; Password=pwd;";
SqlConnection sqlConn = new SqlConnection(connStr);
string queryStr = "INSERT INTO Tbl (Campo1, Campo2, Campo3) VALUES (@Campo1, @Campo2, @Campo3)";
sqlConn.Open();
int id;
try
{
SqlCommand sqlCmd = new SqlCommand();
for (int x = 0; x <= dataGridView1.RowCount - 2; x++)
{
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = queryStr;
sqlCmd.Parameters.AddWithValue("@Campo1", date[x]);
sqlCmd.Parameters.AddWithValue("@Campo2", txtSheet.Text);
sqlCmd.Parameters.AddWithValue("@Campo3", ctr[x]);
sqlCmd.ExecuteNonQuery();
sqlCmd.Parameters.Clear();
}
sqlCmd.Dispose();
sqlCmd = null;
}
catch (SqlException ex)
{
MessageBox.Show("Errore DB: \n\r" + ex.ToString());
}
finally
{
sqlConn.Close();
}
}
Cos' ho trascurato?
Grazie anticipatamente, wally.
Più conosci, più ti rendi conto di non conoscere e nell'abbondanza della conoscenza non manca la vessazione
Torna su
Stanze Forum
Elenco Threads
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 !