前段时间吧xml转化为dataset,现在需要把dataset保存到数据库了

1,创建一个table表 注意:字段和dataset里面的字段对应 否则就不能通用了

2,方法

/// 
/// 把DATASET保存到数据库中
/// 2011-09-15 艾宗兵
/// SysManager mManger 调用SQL对象
/// TableName 要把DataSet保存到表名称
/// XmlObjectName 节点名称
/// 
public static void SaveDataSetToDB(SysManager mManger,DataSet mRs,string TableName,string XmlObjectName)
{
	//获取架构
	mManger.Connection.Fill("SELECT * FROM "+TableName+" WHERE 1=2",ref mRs,TableName);
	//检查是否有数据
	if(!mRs.Tables.Contains(TableName))
	{
		return ;
	}
	string strInsertPart=GetInsertSQL(mRs,TableName);
	//此时的TableName应该为XML里面对象节点的名称
	try
	{
		foreach(DataRow dr in mRs.Tables[XmlObjectName].Rows)
		{
			string strValuePart=String.Empty;
			int tableColumnCount = mRs.Tables[XmlObjectName].Columns.Count;
			int startCount = 0;
			foreach(DataColumn mCol in mRs.Tables[XmlObjectName].Columns)
			{
				if(mRs.Tables[XmlObjectName].Columns.Contains(mCol.ColumnName))
				{
					if(startCount!=0)
					{
						strValuePart+=",";
					}
					strValuePart+=("'"+dr[mCol.ColumnName].ToString()+"'");
					startCount++;
				}
			}
			string strSQL=strInsertPart+"VALUES("+strValuePart+")";
			mManger.Connection.ExecuteCommand(strSQL);
		}
	}
	catch
	{
		//TODO
	}

}

/// 
/// 给DATASET生存插入的SQL语句
/// 
private static string GetInsertSQL(DataSet mRs,string tblName)
{
	int tableColumnCount = mRs.Tables[tblName].Columns.Count;
	int startCount = 0;
	string strINSERT="INSERT INTO "+tblName+"(";
	foreach(DataColumn mCol in mRs.Tables[tblName].Columns)
	{
		if(mRs.Tables[tblName].Columns.Contains(mCol.ColumnName))
		{
			if(startCount!=0)
			{
				strINSERT+=",";
			}
			strINSERT+=mCol.ColumnName;
			startCount++;
		}
	}
	strINSERT+=")";
	return strINSERT;
}		

//调用示例
string cid = sdr["cid"].ToString();
mSRs = mItems.GetTaobaoCategories(cid,ref mListBack);
Constants.SaveDataSetToDB(CurrentPortal.SysManager,mSRs,"Taobao_Categories","item_cat");