Maison >développement back-end >Tutoriel C#.Net >Explication détaillée de l'exemple de code C# pour l'insertion simultanée de données dans DataTable dans la base de données
Cet article présente principalement la méthode détaillée d'insertion C#des données du DataTable dans la bibliothèque data Il a une certaine valeur de référence. Ceux qui sont intéressés peuvent en savoir plus.
La situation actuelle est la suivante : Le client dispose d'une machine de pointage et toutes les informations de pointage des employés sont désormais stockées dans la base de données Access de la machine de pointage. le client a introduit un nouveau système de gestion, il est nécessaire de synchroniser les données d'entrée dans la base de données Access avec la base de données SQL Server. En raison du temps long, plus de 400 000 données ont été accumulées. Fonctions du logiciel : Sélectionnez le fichier de base de données Access, remplissez l'adresse IP de la base de données SQL Server cible, puis démarrez la synchronisation. Méthode d'implémentation : 1. Tout d'abord, stockez les données à importer de la base de données Access dans la DataTableConnexion à la base de données dans le fichier de configuration String
<connectionStrings> <add name="oleConStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="/> <add name="sqlConStr" connectionString ="server=tiantiankaixing;database=新建数据库;trusted_connection=sspi"/> </connectionStrings>encapsule la méthode de lecture des données de la base de données Access dans DataTable
public static string OleConStr = ConfigurationManager.ConnectionStrings["oleConStr"].ConnectionString ; public static DataTable OleGetDataTable(string sql, string filePath) { string a = OleConStr + filePath; using (OleDbConnection conn = new OleDbConnection(a)) { using (OleDbDataAdapter da = new OleDbDataAdapter(sql, conn)) { try { conn.Open(); DataTable dt = new DataTable(); da.Fill(dt); return dt; } catch (Exception ex) { throw ex; } finally { if (conn.State == ConnectionState.Open) conn.Close(); } } } }Lecture de la base de données Access cible dans Datatable
string sql = "select Id,Time from checkinout"; DataTable dt = AcHelper.OleGetDataTable(sql, @"F:\project\tiantiankaixing\admin.mdb");2. Méthode d'encapsulation de l'insertion par lots de données SQL Server
public static void DataTableToSQLServer(DataTable dt,string connectString) { string connectionString = connectString; using (SqlConnection destinationConnection = new SqlConnection(connectionString)) { destinationConnection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection)) { try { bulkCopy.DestinationTableName = "checkinout";//要插入的表的表名 bulkCopy.BatchSize = dt.Rows.Count; bulkCopy.ColumnMappings.Add("ID", "ID");//映射字段名 DataTable列名 ,数据库 对应的列名 bulkCopy.ColumnMappings.Add("TIME", "TIME"); bulkCopy.WriteToServer(dt); System.Windows.Forms.MessageBox.Show("插入成功"); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { } } } }3. Appelez la méthode DataTableToSQlServer()
string localCon = "server=tiantiankaixing;database=Test;trusted_connection=sspi"; Entity.DataTableToSQLServer(dt, localCon);pour insérer toutes les données du DataTable dans la base de données
. 🎜>
Pièce jointe : Utilisation simple de SqlBulkCopypublic void Test() { string connectionString = "server=tiantiankaixing;database=新建数据库;trusted_connection=sspi"; using (SqlConnection sourceConnection = new SqlConnection(connectionString)) { sourceConnection.Open(); //获取读取的表总行数 SqlCommand commandRowCount = new SqlCommand("select count(*) from student",sourceConnection); long countStart = System.Convert.ToInt32(commandRowCount.ExecuteScalar()); //使用SqlDataReader读取源数据 SqlCommand commandSourceData = new SqlCommand("select * from student", sourceConnection); SqlDataReader reader =commandSourceData.ExecuteReader(); //测试用,把数据从一个表批量插入到另一个表 //现实生活中肯定不会 using (SqlConnection destinationConnection =new SqlConnection(connectionString)) { destinationConnection.Open(); //创建一个SQlBulkCopy对象 //指定目标表名 //指定要插入的行数 //指定对应的映射 using (SqlBulkCopy bulkCopy =new SqlBulkCopy(destinationConnection)) { bulkCopy.DestinationTableName ="test"; bulkCopy.BatchSize = 1; bulkCopy.ColumnMappings.Add("数据源列名","目标列名"); try { bulkCopy.WriteToServer(reader); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { reader.Close(); } } } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!