2010-09-23 7 views
2

Je souhaite déplacer des données de la base de données vers une autre base de données.comment mettre à jour datatable dans C# avec du code?

J'écris 2 fonctions. Fonction 1: Je remplis table à partir de database1 dans une table de données et le nom de cette DT

en fonction 2 Je remplis table de database2 avec Dt et nommé son dtnull

mettre à jour dtnull dans la base de données 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); 
} 
+1

serait-ce pas fait mieux avec une seule instruction SQL, comme vous ne semblez pas faire toute manipulation de données ici? – Paddy

+1

yes.je veux juste copier des données dans une nouvelle base de données – Mary

+2

Je répondrais à votre question, mais puisque vous ne prenez pas la peine d'accepter des réponses, je ne prendrai pas la peine de répondre à votre question. –

Répondre

0

Si vous devez copier la base de données SQL, sauvegardez-la et restaurez-la. Vous pouvez également utiliser les services DTS.

0

Si c'est juste quelques tables, je pense que vous pouvez

  1. faites un clic droit sur la table que vous voulez dans le studio de gestion SQL
  2. générer un script de création de votre presse-papiers
  3. exécutons-le
  4. Revenez à votre table d'origine et sélectionnez toutes les lignes
  5. copiez-les
  6. passez à votre nouvelle table et collez

Pas besoin de faire cela plus difficile qu'elle ne l'est.

0

Il y a beaucoup qui reste inexpliquée. Par exemple, la table source et la table cible ont-elles la même structure de colonnes?

Pouvez-vous voir à la fois la base de données de la même SqlConnection (à savoir sont-ils sur la même machine)? Si c'est le cas, vous pouvez le faire en une seule instruction SQL. En supposant que vous souhaitez copier les données de la table T1 à T2 databse DB1 table dans la base de données DB2, vous écririez

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

Excecute utilisant ExecuteNonQuery.

Si les bases de données nécessitent des SqlConnections, je lirais les données de la source à l'aide d'un SqlDataReader et mettre à jour la ligne cible par ligne. Je pense que ce serait plus rapide que d'utiliser un SqlDataAdapter et DataTable car ils nécessitent plus de structure et de mémoire. La commande Update écrit la ligne de données par ligne dans tous les cas.

Questions connexes