2016-12-16 6 views
0

Ich muss den Inhalt der Tabelle in derselben Tabelle in einer anderen Datenbank übertragen und Ich schreibe diesen einfachen Code mit der C# dataAdapter.Fill() und dataAdapter.Update(), aber es scheint nicht funktioniert, wie ich vermutete.Übertragen Sie Daten einer Tabelle aus einer Datenbank in die gleiche Tabelle einer anderen Datenbank mit C# dataAdapter.Fill() und dataAdapter.Update()

SqlConnection sqlConnection = new SqlConnection(strSqlConnectionString); 
SqlConnection sqlConnection2 = new SqlConnection(strSqlConnectionString2); 

sqlConnection.Open(); 
sqlConnection2.Open(); 
DataSet CustomerDataSet = new DataSet(); 

SqlDataAdapter sqlDA; 
SqlDataAdapter sql2DA; 

SqlCommandBuilder sqlCmdBuilder; 
SqlCommandBuilder sqlCmdBuilder2; 

sqlDA = new SqlDataAdapter("SELECT * FROM Articolo;", sqlConnection); 
sqlDA2 = new SqlDataAdapter("SELECT * FROM Articolo;", sqlConnection2); 

sqlCmdBuilder = new SqlCommandBuilder(sqlDA); 
sqlCmdBuilder2 = new SqlCommandBuilder(sqlDA2); 

sqlDA.Fill(CustomerDataSet, "Articolo");  

sqlDA2.Fill(CustomerDataSet, "Articolo"); 

sqlDA2.Update(CustomerDataSet, "Articolo");` 

Was ich tun mag, ist die zweite db hat (string Verbindung: strSqlConnectionString2) mit aktualisierten Daten von der ersten db genommen, um die Funktionalität von DataAdapter.Fill Nutzung() + DataAdapter.Update(). Ist das möglich? Und kann ich die gleichen Dinge tun, aber mit Access db als zweite db?

+0

Warum nicht nur die Datenbank verwenden, wie in einer gespeicherten Prozedur? Beispiel hier: http://stackoverflow.com/questions/187770/copy-tables-from-one-database-to-another-in-sql-server –

+0

Weil ich die Tabellenzeilen der zweiten db aktualisieren möchte, wenn ich brauche , also wenn ich dieselbe Zeile in beiden Tabellen habe, ignoriere ich sie, wenn die Zeile nicht existiert, füge ich sie der zweiten Tabelle hinzu, und wenn die Zeile bereits existiert, aber mit Unterschieden, aktualisiere ich sie und I dachte, mit Update könnte ich es schaffen ... – Saverio

Antwort

0

Können Sie es auf diese Weise versuchen?

using System; 
using System.Data; 
using System.Data.OleDb; 
using System.Windows.Forms; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     string connetionString; 
     OleDbConnection connection; 
     OleDbDataAdapter oledbAdapter; 
     OleDbCommandBuilder oledbCmdBuilder; 
     DataSet ds = new DataSet(); 
     DataSet changes; 
     int i; 
     string Sql; 


     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Your mdb filename;"; 
      connection = new OleDbConnection(connetionString); 
      Sql = "select * from tblUsers"; 
      try 
      { 
       connection.Open(); 
       oledbAdapter = new OleDbDataAdapter(Sql, connection); 
       oledbAdapter.Fill(ds); 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show (ex.ToString()); 
      } 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       oledbCmdBuilder = new OleDbCommandBuilder(oledbAdapter); 
       changes = ds.GetChanges(); 
       if (changes != null) 
       { 
        oledbAdapter.Update(ds.Tables[0]); 
       } 
       ds.AcceptChanges(); 
       MessageBox.Show("Save changes"); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
     } 
    } 
} 
Verwandte Themen