62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// Insert data to Oracle
/// </summary>
/// <returns></returns>
private int InsertResultToOracle(DataSet ds)
{
int status = -1;
OracleConnection myConnection = null;
OracleCommand myCommand = null;
try
{
myConnection = new OracleConnection(ConnOracle);
myCommand = myConnection.CreateCommand();
//插入数据条数
myCommand.ArrayBindCount = ds.Tables[0].Rows.Count;
myCommand.CommandText = " Insert into DETECTRECORD( ";
myCommand.CommandText += " VINID,AUTOTYPE,DETECTDATE,ENGINECHCKDT,DETECTRESULT,ENGINEJUDGE) ";
myCommand.CommandText += " VALUES( ";
myCommand.CommandText += " :VINID,:AUTOTYPE,:DETECTDATE,:ENGINECHCKDT,:DETECTRESULT,:ENGINEJUDGE)";
myConnection.Open();
//初始化参数
string[] vin = new string[ds.Tables[0].Rows.Count];
string[] autotype = new string[ds.Tables[0].Rows.Count];
string[] detectdate = new string[ds.Tables[0].Rows.Count];
string[] enginechckdt = new string[ds.Tables[0].Rows.Count];
string[] result = new string[ds.Tables[0].Rows.Count];
string[] enginejudge = new string[ds.Tables[0].Rows.Count];
//VIN
OracleParameter ParamVIN = new OracleParameter("VINID", OracleDbType.Varchar2);
ParamVIN.Direction = ParameterDirection.Input;
ParamVIN.Value = vin;
myCommand.Parameters.Add(ParamVIN);
//AUTOTYPE
OracleParameter ParamAutotype = new OracleParameter("AUTOTYPE", OracleDbType.Varchar2);
ParamAutotype.Direction = ParameterDirection.Input;
ParamAutotype.Value = autotype;
myCommand.Parameters.Add(ParamAutotype);
//DETECTDATE
OracleParameter ParamDETEDATE = new OracleParameter("DETECTDATE", OracleDbType.Varchar2);
ParamDETEDATE.Direction = ParameterDirection.Input;
ParamDETEDATE.Value = detectdate;
myCommand.Parameters.Add(ParamDETEDATE);
//enginechckdt
OracleParameter ParamEngineCK = new OracleParameter("ENGINECHCKDT", OracleDbType.Varchar2);
ParamEngineCK.Direction = ParameterDirection.Input;
ParamEngineCK.Value = enginechckdt;
myCommand.Parameters.Add(ParamEngineCK);
//RESULT
OracleParameter ParamResult = new OracleParameter("DETECTRESULT", OracleDbType.Varchar2);
ParamResult.Direction = ParameterDirection.Input;
ParamResult.Value = result;
myCommand.Parameters.Add(ParamResult);
//ENGINEJUDGE
OracleParameter ParamEngineJudge = new OracleParameter("ENGINEJUDGE", OracleDbType.Varchar2);
ParamEngineJudge.Direction = ParameterDirection.Input;
ParamEngineJudge.Value = enginejudge;
myCommand.Parameters.Add(ParamEngineJudge);
//insert array
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
vin[i] = ds.Tables[0].Rows[i][0].ToString().Trim();
autotype[i] = ds.Tables[0].Rows[i][1].ToString().Trim();
detectdate[i] = ds.Tables[0].Rows[i][2].ToString().Trim() + " " + ds.Tables[0].Rows[i][3].ToString().Trim();
enginechckdt[i] = ds.Tables[0].Rows[i][2].ToString().Trim();
if (ds.Tables[0].Rows[i][4].ToString().Trim() == "1")
{
result[i] = "合格";
enginejudge[i] = "1";
}
else
{
result[i] = "不合格";
enginejudge[i] = "0";
HasDTC = true;
}
WriteLog.Log("vin: " + vin[i] + "\n"
+"autotype: " + autotype[i] + "\n"
+"detectdate: " + detectdate[i] + "\n"
+"enginechckdt: " + enginechckdt[i] + "\n"
+"result: " + result[i] + "\n"
+"enginejudge: " + enginejudge[i] + "\n");
}
status = myCommand.ExecuteNonQuery();
//myConnection.Close();
//myCommand.Dispose();
}
catch (Exception ex)
{
WriteLog.Log("InsertResultToOracle:" + ex.Message.ToString());
}
finally
{
if (myConnection != null)
{
myConnection.Close();
}
if (myCommand != null)
{
myCommand.Dispose();
}
}
return status;
}
/// <summary>
/// 执行OracleCommand操作,使用批量插入
/// </summary>
/// <param name="transaction">事务</param>
/// <param name="arrayBindCount">批量插入数</param>
/// <param name="sql">sql语句</param>
/// <param name="commandParameters">OracleParameter集合</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(OracleTransaction transaction, int arrayBindCount, string sql, params OracleParameter[] commandParameters)
{
if (arrayBindCount == 0) return 0;
using (OracleCommand cmd = new OracleCommand(sql, transaction.Connection))
{
cmd.CommandType = CommandType.Text;
cmd.ArrayBindCount = arrayBindCount;
cmd.Parameters.AddRange(commandParameters);
int retval = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return retval;
}
}
DataTable dt = new DataTable();
foreach (DataRow dr in dt.Rows)
{
ls.Add(dr["列名"]);
}