日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

發布時間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

向數據庫的一張表中添加數據,可以采用單個添加,即一條數據、一條數據的添加;也可以采用批量導入,依次將好些條數據寫入數據庫的一張表中。文本借助實例《添加系列信息》講解一種向數據庫批量導入數據的方法。

1.界面設計

觀看一下添加系列信息部分的界面設計:

本文主要介紹批量導入系列信息的實現,單個添加的實現不在此文講解之列!

2.框架結構

此項目的實現,我采用簡單的三層,看一下項目框架

3.批量導入數據的實現

下面逐層介紹每層實現:

3.1 SqlHelper數據庫助手類中添加向數據庫表導入數據的方法(SqlHelper.cs)

#region 批量導入datatable

///

/// 批量導入datatable

///

/// 數據表

/// 數據表名

/// 列集合

public int InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum)

{

//打開數據庫

GetConn();

try

{

//聲明SqlBulkCopy ,using釋放非托管資源

using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))

{

//一次批量的插入的數據量

//sqlBC.BatchSize = 1000;

//超時之前操作完成所允許的秒數,如果超時則事務不會提交 ,數據將回滾,所有已復制的行都會從目標表中移除

//sqlBC.BulkCopyTimeout = 60;

//設定 NotifyAfter 屬性,以便在每插入10000 條數據時,呼叫相應事件。

//sqlBC.NotifyAfter = 10000;

// sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);

//設置要批量寫入的表

sqlBC.DestinationTableName = TabelName;

//自定義的datatable和數據庫的字段進行對應

for (int i = 0; i < dtColum.Count; i++)

{

sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());

}

//批量寫入

sqlBC.WriteToServer(dt);

}

//導入成功,返回1

return 1;

}

catch

{

//導入失敗返回-1

return -1;

}

finally

{

//關閉數據庫

conn.Close();

}

}

#endregion

3.2.DAL層批量導入數據的代碼(DaoSeries.cs)

#region 批量導入系列信息

///

/// 批量導入系列信息

///

/// DataTable數據表-dt;

/// DataColumnCollection 列集合-dtColum

/// 整數:大于0代表導入成功;否則導入失敗

public int ImportDatatable(DataTable dt, DataColumnCollection dtColum)

{

//定義一個整型標記變量

int result;

//調用sqlHelper的"批量導入datatable表"的方法

result = sqlheler.InsertTable(dt, "T_SeriesInfo", dtColum);

//返回結果

return result;

}

#endregion

3.3.BLL層批量導入數據的代碼(MgrSeriesManager.cs)

#region 批量導入系列

///

/// 批量導入系列

///

/// 數據表

/// 數據列集合

/// 整數:大于0代表導入成功,否則導入失敗

public int ImportDatatable(DataTable dt, DataColumnCollection dtColum)

{

DaoSeries series=new DaoSeries();

return series.ImportDatatable(dt, dtColum);

}

#endregion

3.4.界面層構造DataTable數據,向BLL層傳遞(FrmSeriesManager.aspx,FrmSeriesManager.aspx.cs)

這里構造DataTable數據,我是采用從界面上傳Excel,然后從Excel獲取輸入然后存入DataTable的

3.4.1 從界面傳入Excel,調用BLL層Excel轉換成DataTable的方法實現

#region 批量導入系列

///

/// 批量導入系列

///

protected void btnImportSeries_Click(object sender, EventArgs e)

{

//BLL層,添加系列信息類

MgrSeriesManager series = new MgrSeriesManager();

//BLL層把excel轉化為datatable的方法

MgrCreateExcelData createExcelData = new MgrCreateExcelData();

//獲取上傳文件地址

string url = fupImprotSeries.PostedFile.FileName.ToString();

if (url == "")

{

//數據源為空,彈出提示:請選擇Excel文件!

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

return;

}

string urlLocation = url.Substring(url.LastIndexOf("\\") + 1);//獲取文件名

DataTable dt;

//在系統中建文件夾up,并將excel文件另存

this.fupImprotSeries.SaveAs(Server.MapPath("~\\up") + "\\" + urlLocation);//記錄文件名到服務器相對應的文件夾中

// Response.Write(urlLocation);

//獲得文件路徑

string strpath = Server.MapPath("~\\up") + "\\" + urlLocation;

//string strpath = "c:\\abc.xls";

// Response.Write(strpath);

//把excel轉換為datatable

dt = createExcelData.CreateExcelDataSource(strpath);

DataColumnCollection dcc = dt.Columns;

//導入數據庫

int i = series.ImportDatatable(dt, dcc);

if (i > 0)

{

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

}

else

{

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

}

}

#endregion

3.4.2 BLL層Excel轉換成DataTable的類(MgrCreateExcelData.cs)

/*************************************************

作者:jql

小組:一中考核系統

說明:把excel轉化為datatable

創建日期:2012年11月25日14:17:06

版本號:v1.0

版權所有:信息技術提高班

**********************************************/

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

//引用各命名空間

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

namespace BLL

{

public class MgrCreateExcelData

{

public MgrCreateExcelData()

{

}

///

/// 傳入excel路徑,轉換為datatable

///

///

///

public DataTable CreateExcelDataSource(string url)

{

DataTable dt = null;

// string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source="

// +url + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";

//獲得excel數據

string connetionStr = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + url + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

string strSql = "select * from [Sheet1$]";

OleDbConnection oleConn = new OleDbConnection(connetionStr);

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);

try

{

//把excel數據填充給datatable

dt = new DataTable();

oleAdapter.Fill(dt);

return dt;

}

catch (Exception ex)

{

throw ex;

}

finally

{

oleAdapter.Dispose();

oleConn.Close();

oleConn.Dispose();

}

}

}

}

至此向數據庫批量導入數據就實現了,如果你想對要導入數據庫的數據做合法性判斷,執行Excel轉換成Datatable時,自己加些判斷處理就行了!

總結

以上是生活随笔為你收集整理的c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。