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

歡迎訪問 生活随笔!

生活随笔

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

数据库

将DataTable中的数据导入到数据库中

發布時間:2025/7/14 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将DataTable中的数据导入到数据库中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????上次在根據excel的文件的路徑提取其中表的數據到DataSet中 一文中介紹了將Excel文件中的數據讀取到DataSet中的方法,今天我來介紹下我曾經在項目中用到的一個將DataTable中的數據導入到數據庫中的方法和將DataTable中的數據寫入數據庫并過濾掉重復數據的方法。代碼可以給大家作為Demo看下,如果需要應用的話,可能需要進行

小小的改動即可。

/// <summary>
??????? /// 將DataTable中數據寫入數據庫中
??????? /// </summary>
??????? /// <param name="dt"></param>
??????? /// <returns></returns>
??????? public static bool WriteDataToDB(DataTable dt)
??????? {
??????????? if (dt==null || dt.Rows.Count == 0)
??????????? {
??????????????? return true;
??????????? }
??????????? string tname = dt.TableName;
??????????? string colNames = "";
??????????? for (int i = 0; i < dt.Columns.Count; i++)
??????????? {
??????????????? colNames += dt.Columns[i].ColumnName + ",";
??????????? }
??????????? colNames = colNames.TrimEnd(',');
??????????? string cmd = "";
??????????? string colValues;
??????????? string cmdmode = string.Format("insert into {0}({1}) values({{0}});", tname, colNames);
??????????? for (int i = 0; i < dt.Rows.Count; i++)
??????????? {
??????????????? colValues = "";
??????????????? for (int j = 0; j < dt.Columns.Count; j++)
??????????????? {
??????????????????? if (dt.Rows[i][j].GetType() == typeof(DBNull))
??????????????????? {
??????????????????????? colValues += "NULL,";
??????????????????????? continue;
??????????????????? }
??????????????????? if (dt.Columns[j].DataType == typeof(string))
??????????????????????? colValues += string.Format("'{0}',", dt.Rows[i][j]);
??????????????????? else if (dt.Columns[j].DataType == typeof(int) || dt.Columns[j].DataType == typeof(float) || dt.Columns[j].DataType == typeof(double))
??????????????????? {
??????????????????????? colValues += string.Format("{0},", dt.Rows[i][j]);
??????????????????? }
??????????????????? else if (dt.Columns[j].DataType == typeof(DateTime))
??????????????????? {
??????????????????????? colValues += string.Format("cast('{0}' as datetime),", dt.Rows[i][j]);
??????????????????? }
??????????????????? else if (dt.Columns[j].DataType == typeof(bool))
??????????????????? {
??????????????????????? colValues += string.Format("{0},", dt.Rows[i][j].ToString());
??????????????????? }
??????????????????? else
??????????????????????? colValues += string.Format("'{0}',", dt.Rows[i][j]);
??????????????? }
??????????????? cmd = string.Format(cmdmode, colValues.TrimEnd(','));
??????????? }
??????????? int ret = 0;
??????????? try
??????????? {
??????????????? ret = DbHelperSQL.ExecuteSql(cmd);
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? //寫錯誤日志...
??????????????? string strOuput = string.Format("向數據庫中寫數據失敗,錯誤信息:{0},異常{1}\n", e.Message, e.InnerException);
??????????????? //將信息寫入到日志輸出文件
??????????????? DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
???????????????
??????????? }
??????????? if (ret == -1)
??????????? {
??????????????? return false;
??????????? }
??????????? return true;
???????????
??????? }

??????? /// <summary>
??????? /// 寫入基礎數據,并刪除其中的重復的項目
??????? /// </summary>
??????? /// <param name="dt"></param>
??????? /// <param name="KeyName">主鍵</param>
??????? /// <param name="icol">主鍵所在的列</param>
??????? /// <returns></returns>
??????? public static bool WriteDataToDB(DataTable dt, string KeyName, int icol)
??????? {
??????????? //刪除數據庫中的重復項目
??????????? string mKeyStr = "";
??????????? for (int i = 0; i < dt.Rows.Count; i++)
??????????? {
??????????????? mKeyStr += "'" + dt.Rows[i][icol] + "',";
??????????? }
??????????? mKeyStr = mKeyStr.Trim(',');
??????????? string sqlStr = "Delete? from? " + dt.TableName + " where " + KeyName + " in (" + mKeyStr + ")";
??????????? DbHelperSQL.ExecuteSql(sqlStr);

??????????? //向數據庫中寫入新的數據
??????????? string tname = dt.TableName;
??????????? string colNames = "";
??????????? for (int i = 0; i < dt.Columns.Count; i++)
??????????? {
??????????????? colNames += dt.Columns[i].ColumnName + ",";
??????????? }
??????????? colNames = colNames + "CreateDate ";

??????????? string cmd = "";
??????????? string colValues;
??????????? string cmdmode = string.Format("insert into {0}({1}) values({{0}});", tname, colNames);
??????????? for (int i = 0; i < dt.Rows.Count; i++)
??????????? {
??????????????? colValues = "";
??????????????? for (int j = 0; j < dt.Columns.Count; j++)
??????????????? {
??????????????????? if (dt.Rows[i][j].GetType() == typeof(DBNull))
??????????????????? {
??????????????????????? colValues += "NULL,";
??????????????????????? continue;
??????????????????? }
??????????????????? if (dt.Columns[j].DataType == typeof(string))
??????????????????? {
??????????????????????? colValues += string.Format("'{0}',", dt.Rows[i][j]);
??????????????????? }
??????????????????? else if (dt.Columns[j].DataType == typeof(int) || dt.Columns[j].DataType == typeof(float) || dt.Columns[j].DataType == typeof(double))
??????????????????? {
??????????????????????? colValues += string.Format("{0},", dt.Rows[i][j]);
??????????????????? }
??????????????????? else if (dt.Columns[j].DataType == typeof(DateTime))
??????????????????? {
??????????????????????? colValues += string.Format("cast('{0}' as datetime),", dt.Rows[i][j]);
??????????????????? }
??????????????????? else if (dt.Columns[j].DataType == typeof(bool))
??????????????????? {
??????????????????????? colValues += string.Format("{0},", dt.Rows[i][j].ToString());
??????????????????? }
??????????????????? else
??????????????????????? colValues += string.Format("'{0}',", dt.Rows[i][j]);
??????????????? }
??????????????? colValues += "getdate()";
??????????????? cmd = string.Format(cmdmode, colValues);

??????????????? int ret = 0;
??????????????? try
??????????????? {
??????????????????? ret = DbHelperSQL.ExecuteSql(cmd);
??????????????? }
??????????????? catch (Exception e)
??????????????? {
??????????????????? //寫錯誤日志...
??????????????????? string strOuput = string.Format("向數據庫中寫數據失敗,錯誤信息:{0},異常{1}\n", e.Message, e.InnerException);
??????????????????? //將信息寫入到日志輸出文件
??????????????????? DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
???????????????
??????????????? }
??????????????? if (ret == -1)
??????????????? {
??????????????????? return false;
??????????????? }
??????????? }
??????????? return true;
??????? }

?

?

轉載于:https://www.cnblogs.com/kevinGao/archive/2011/09/23/2186441.html

總結

以上是生活随笔為你收集整理的将DataTable中的数据导入到数据库中的全部內容,希望文章能夠幫你解決所遇到的問題。

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