2 Stimmen

Wie aktualisiert man eine Datentabelle in c# mit Code?

Ich möchte Daten aus einer Datenbank in eine andere Datenbank verschieben.

Ich schreibe 2 Funktionen. Funktion 1: Ich fülle die Tabelle aus database1 in eine Datentabelle und nenne diese DT

in Funktion 2 fülle ich die Tabelle in Datenbank2 mit Dt und nenne sie dtnull

Ich aktualisiere dtnull in Datenbank 2

function 2:
{
  SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand();
            sda.SelectCommand.Connection = objconn;
            sda.SelectCommand.CommandText = "Select * from " + TableName + "";
            DataTable dtnull = new DataTable();
            sda.Fill(dtnull);
            SqlCommandBuilder Builder = new SqlCommandBuilder();
            Builder.DataAdapter = sda;
            Builder.ConflictOption = ConflictOption.OverwriteChanges;
            string insertCommandSql = Builder.GetInsertCommand(true).CommandText;
            foreach (DataRow Row in Dt.Rows)
            {
                dtnull.ImportRow(Row);

            }
           sda.Fill(dtnull);
           sda.Update(dtnull);
}

0voto

Jakub Konecki Punkte 44858

Wenn Sie eine SQL-Datenbank kopieren müssen, sichern Sie sie einfach und stellen Sie sie wieder her. Alternativ können Sie auch die DTS-Dienste verwenden.

0voto

jim Punkte 24968

Wenn es sich nur um ein paar Tische handelt, können Sie meiner Meinung nach

  1. Rechtsklick auf die gewünschte Tabelle im SQL Management Studio
  2. ein Erstellungsskript in der Zwischenablage erzeugen
  3. es ausführen
  4. Gehen Sie zurück zu Ihrer ursprünglichen Tabelle und markieren Sie alle Zeilen
  5. sie kopieren
  6. Gehen Sie zu Ihrer neuen Tabelle und fügen Sie

Es gibt keinen Grund, die Sache schwieriger zu machen, als sie ist.

0voto

Caimen Punkte 2598

Sie brauchen dafür eigentlich kein Update zu verwenden. Probieren Sie diese Lösung aus, das könnte der einfachste Weg für Sie sein.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

Wenn Sie eine LINQ-Lösung wünschen, kann ich Ihnen eine anbieten.

0voto

SeaDrive Punkte 3892

Vieles bleibt unerklärt. Haben zum Beispiel die Ausgangs- und die Zieltabelle die gleiche Spaltenstruktur?

Können Sie beide Datenbanken über dieselbe SqlConnection einsehen (d. h. befinden sie sich auf demselben Rechner)? Wenn ja, können Sie alles in einer einzigen SQL-Anweisung erledigen. Angenommen, Sie wollen die Daten aus der Tabelle T1 in der Datenbank DB1 in die Tabelle T2 in der Datenbank DB2 kopieren, dann würden Sie schreiben

insert DB2.dbo.T2 select * from DB1.dbo.T1

Ausführen mit ExecuteNonQuery.

Wenn die Datenbanken unterschiedliche SqlConnections erfordern, würde ich die Daten aus der Quelle mit einem SqlDataReader lesen und das Ziel zeilenweise aktualisieren. Ich denke, das wäre schneller als die Verwendung eines SqlDataAdapters und einer DataTable, da diese mehr Struktur und Speicher benötigen. Der Update-Befehl schreibt die Daten auf jeden Fall zeilenweise.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X