Torna al Thread
namespace Code
{
public partial class Form1 : Form
{
private const string InsertDB = @"INSERT INTO tblUser(nome,cognome,via,codice)VALUE(?,?,?,?);";
private const string CnFROM = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db\\sigma.mdb;User Id=admin;Password=;";
private const string CnTO = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db\\copia1.mdb;User Id=admin;Password=;";
private DataTable DT;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{DataSet ds = new DataSet();
// riempo il Dataset con la tabella da copiare e modificare
ds = CloneTab(CnFROM);
// ne faccio una copia sul datatable DT
DT = ds.Tables["tbluser"].Copy();
// Aggiungo la colonna in più
DataColumn clmn = new DataColumn();
clmn.AllowDBNull = true;
clmn.ColumnName = "codice";
clmn.DataType = System.Type.GetType("System.String");
DT.Columns.Add(clmn);
//scorro tutte le righe del datatable e scrivo nella colonna appena aggiunta
foreach (DataRow row in DT.Rows)
{
// scorro tutte le righe della datatable ed scrivo sulla colonna aggiunta il relativo valore..
row["codice"] = row["nome"].ToString() + row["cognome"].ToString();
}
}
private DataSet CloneTab(string cnnString)
{
System.Data.OleDb.OleDbDataAdapter daClone = new System.Data.OleDb.OleDbDataAdapter();
DataSet dsClone = new DataSet();
System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection();
cn.ConnectionString = cnnString;
try
{
cn.Open();
}
catch (Exception e) { MessageBox.Show(e.Message); }
finally
{
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
cmd.CommandText = "select * from tbluser";
cmd.Connection = cn;
daClone.SelectCommand = cmd;
daClone.Fill(dsClone, "tbluser");
}
// ritorna il dataset "riempito" con i dati
return dsClone;
}
private void button1_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection cnUPDATE = new System.Data.OleDb.OleDbConnection();
//setto la connessione del database di destinazione...
cnUPDATE.ConnectionString = CnTO;
// scorro tutte le row del datatable
foreach (DataRow row in DT.Rows)
{
OleDbCommand cmdWrite = new OleDbCommand();
cmdWrite.Connection = cnUPDATE;
cmdWrite.CommandText = InsertDB;
cmdWrite.CommandType = CommandType.Text;
// scorro tutte le colonne della row ed assegno i parametri
for (int j = 0; j < row.Table.Columns.Count; j++)
{
cmdWrite.Parameters.Add(
new OleDbParameter(row.Table.Columns[j].ColumnName,
row[j]));
}
// salvo la row del datatable
cnUPDATE.Open();
cmdWrite.ExecuteNonQuery();
cnUPDATE.Close();
}
}
}
}