詳解C#把DataTable中資料一次插入資料庫的範例程式碼
本篇文章主要介紹了詳解C#把DataTable中資料一次插入資料函式庫的方法,具有一定的參考價值,有興趣的可以了解一下。
現在實際的情況是這樣的:
客戶有一台打卡機,員工打卡的資訊全部儲存在打卡機的Access資料庫裡面,現在客戶引進了一種新的管理系統,需要將Access資料庫中的打卡資料同步到SQL Server資料庫中,由於時間比較久,資料累積了有40萬多條。
軟體功能:
選擇Access資料庫文件,填入目標SQL Server資料庫的IP位址,然後開始進行同步。
實作方法:
1、先把Access資料庫中要匯入的資料存入DataTable中
##設定檔中的資料庫連線字串
<connectionStrings> <add name="oleConStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="/> <add name="sqlConStr" connectionString ="server=tiantiankaixing;database=新建数据库;trusted_connection=sspi"/> </connectionStrings>
登入後複製
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(); } } } }
登入後複製
string sql = "select Id,Time from checkinout"; DataTable dt = AcHelper.OleGetDataTable(sql, @"F:\project\tiantiankaixing\admin.mdb");
登入後複製
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 { } } } }
登入後複製
string localCon = "server=tiantiankaixing;database=Test;trusted_connection=sspi"; Entity.DataTableToSQLServer(dt, localCon);
登入後複製
public 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(); } } } } }
登入後複製
以上是詳解C#把DataTable中資料一次插入資料庫的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前
By DDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
