2017-12-01 1 views
-1

Ich muss eine Access-Datenbank durch Code zu Sql Server importieren. Meine seit vielen Jahren in C# erstellte Software wurde in eine Access-Datenbank integriert. Ab jetzt migrieren wir zu Sql Server und die Absicht ist in der Aktualisierung auf die nächste Version das System wird nur mit Sql Server arbeiten. Ich denke zuerst, eine Sql-Datenbank mit den gleichen Namen von Tabellen und Spalten zu erstellen, und die Software liest die Access-Tabellen und speichert die Daten in der Sql-Datenbank. Gibt es einen anderen, praktikableren Weg, dies durch Kodieren zu tun?So importieren Sie Daten von MS Access auf Sql Server durch Codierung

Ich habe gesucht und gefunden nur Tools bereit, aber nichts durch Codierung.

+1

Warum dies eine einmalige Aufgabe, wenn seine in Code zu tun? SSMA/SQL Server Migration Assistant kann dies tun und Ihnen einen guten Startpunkt geben. –

+0

Warum in diesem Fall würde ich Computer für Computer jedes Benutzers zugreifen müssen und den SqlServer installieren, um die Migration durchzuführen. Die Absicht ist, dass durch die Software, in der Form, die von Visual Studio erstellt wurde, beim Aktualisieren der Software für die neue Version der Benutzer selbst zu der neuen Datenbank migrieren kann, indem er beispielsweise auf eine Ok-Schaltfläche klickt. – Leandro

Antwort

0

Ok, nehmen wir an, Ihr Zugang Datenbanktabelle hat 3 Spalten, 1. ist eine Art von Ganzzahl, 2. ist Zeichenfolge (varchar) nad 3. ist DateTime (Datum).

Das ist also der Code, den Sie für die Weitergabe von Daten aus Zugriff auf SQL Server zu tun haben:

DataTable table = new DataTable(); 
// get data from access 
using(OleDbConnection conn = new OleDbConnection("connString1")) 
{ 
    using(OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT * FROM MyTable", conn)) 
      da.Fill(table); 
} 

//insert data into Sql server: 
using(SqlConnection conn = new SqlConnection("connString2")) 
{ 
    using(SqlCommand cmd = new SqlCommand()) 
    { 
      cmd.CommandText = @"INSERT INTO MyTable VALUES (@p1, @p2, @p3)"; 
      cmd.Connection = conn; 
      cmd.Parameters.Add("@p1", SqlDbType.Int); 
      cmd.Parameters.Add("@p2", SqlDbType.CarChar, 50); 
      cmd.Parameters.Add("@p3", SqlDbType.DateTime); 
      conn.Open(); 

      for(int i = 0; i < table.Rows.Count; i++) 
      { 
        cmd.Parameters["@p1"].Value = Convert.ToInt32(table.Rows[i][0]); 
        cmd.Parameters["@p2"].Value = table.Rows[i][1].ToString(); 
        cmd.Parameters["@p3"].Value = Convert.ToDateTime(table.Rows[i][2]); 
        try 
        { 
          cmd.ExecuteNonQuery(); 
        } 
        catch (Exception ex) 
        { 
          MessageBox.Show(ex.Message); 
          break; 
        } 
      } 
    } 
} 
+0

Genau daran denke ich. Bedeutet das, dass es keinen einfacheren Weg gibt, das zu tun? – Leandro

+0

ist der einfachste Weg, es durch Code zu tun. – vijayvicks

+0

@vijayvikcs Tkx! – Leandro

Verwandte Themen