将DataTable中的数据导入到数据库中
2011-09-23 15:16
375 查看
上次在根据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;
}
小小的改动即可。
/// <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;
}
相关文章推荐
- 将DataTable中的数据导入到数据库中
- 黑马程序员_筛选DataTable中的数据,批量导入到数据库中
- DataTable 数据导入MS ACCESS 数据库中 数字类型字段为空的解决办法
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据
- 简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据
- 将DATATABLE中的数据导入到数据库中
- 如何把DataTable 数据导入数据库表
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据
- DataTable 快速导入数据库——百万条数据只需几秒!!(最新,添加了委托)
- 如何用Java将excel数据导入数据库
- 解决把网页的表格数据导入到数据库中
- 从钱龙数据中读取股票交易数据(日线)导入到数据库
- PHPExcel导入excel数据到数据库中
- excel内容导入数据库数据丢失问题的分析几解决方法
- 使用SqlBulkCopy将DataTable中的数据批量插入数据库中
- Oracle数据泵远程导入文件到本地数据库
- 搭建数据库环境--导入数据产生ORA-1659错误的一个原因
- 将数据导入数据库
- 导入导出数据库单表数据
- 数据库向另外一个数据库中导入数据