通過代碼把DataTable資料庫Insert到資料庫中,代碼如下:
/// <summary>
/// DataTable内的資料插入到資料庫
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="sourceFields">DataTable内的字段名</param>
/// <param name="targetFields">目标表的字段名</param>
/// <param name="dataSource">要插入的資料</param>
/// <returns>ture(成功)、false(失敗)</returns>
public static SystemMessage InsertData(OracleConnection conn,OracleTransaction trans, string tableName, string[] sourceFields, string[] targetFields, DataTable dataSource)
{
SystemMessage _msg = new SystemMessage(true);
string sql = "insert into " + tableName + "({0}) values({1})";
StringBuilder fields = new StringBuilder();
StringBuilder values = new StringBuilder();
int count = sourceFields.Length;
for (int i = 0; i < count; i++)
{
fields.Append(targetFields[i]);
values.Append(sourceFields[i]);
if (i != count - 1)
{
fields.Append(",");
values.Append(",");
}
}
sql = sql.Replace("{0}", fields.ToString());
values = values.Replace(",", ",:");
sql = sql.Replace("{1}", ":" + values.ToString());
try
{
foreach (DataRow dr in dataSource.Rows)
{
OracleCommand cmdOracle = new OracleCommand(sql, conn);
cmdOracle.Transaction = trans;
cmdOracle.CommandType = CommandType.Text;
OracleParameter prm = null;
foreach (string columnName in sourceFields)
{
prm = new OracleParameter(columnName, dr[columnName]);
cmdOracle.Parameters.Add(prm);
}
cmdOracle.ExecuteNonQuery();
}
}
catch (Exception e)
{
_msg.Message = tableName + "表資料插入失敗:" + e.Message;
_msg.Success = false;
}
finally
{
conn.Close();
conn.Dispose();
}
return _msg;
}