怎样把datatable原封不动的导入到mysql中 最好是又注释的那种代码 谢谢 如题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据应该没有关系的吧,都一样的。 我原来的代码,需要改动一下。/// <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; } 1楼我没看懂 这个是mysql 还是sqlserver啊 还有你这没有连接mysql吧。。 初学者 请教了 还有这个 DbHelperSQL类是? 怎么禁用控件的上下左右键盘事件 高手进来下 求教,怎么开源??? C#连sqlserver 未将对象引用设置到对象的实例 求中级C#电子书的下载地址 toolTip 内容换行,老鸟来!在线等,马上给分 急!!!请问在C#里面如何利用MSMQ向同样在一个工作组里面的计算机发送消息?? c#listview怎么实现记住密码登陆进去后,再次登录仍然选中,不选,则再次登陆时就不选中 请教一个很奇怪的问题【C#显示mysql查询结果出现System.Byte[]】 wpf与qt界面能不能融合 C#获得ftp服务器文件中的地址?? 请问,逐行读取数据
/// <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;
}