下面代码报错ORA-01008: 并非所有变量都已绑定,网上找了一圈,也没解决,高手帮忙。String sql = "";
for (int i = 0; i < clDs.Tables[0].Rows.Count; i++)
{
sql = @"insert into vh_calls(id_call) values( :id_call)"; OracleConnection connection = new OracleConnection(constr);
connection.Open();
OracleCommand command = null;
command = new OracleCommand(sql, connection);
command.Parameters.AddWithValue("id_call", clDs.Tables[0].Rows[i][0] == DBNull.Value ? DBNull.Value : clDs.Tables[0].Rows[i][0]); try
{
command = new OracleCommand(sql, connection);
command.ExecuteNonQuery();
command.Dispose(); }
catch (System.Exception ex)
{
throw ex;
}
connection.Close();
connection.Dispose();
}
for (int i = 0; i < clDs.Tables[0].Rows.Count; i++)
{
sql = @"insert into vh_calls(id_call) values( :id_call)"; OracleConnection connection = new OracleConnection(constr);
connection.Open();
OracleCommand command = null;
command = new OracleCommand(sql, connection);
command.Parameters.AddWithValue("id_call", clDs.Tables[0].Rows[i][0] == DBNull.Value ? DBNull.Value : clDs.Tables[0].Rows[i][0]); try
{
command = new OracleCommand(sql, connection);
command.ExecuteNonQuery();
command.Dispose(); }
catch (System.Exception ex)
{
throw ex;
}
connection.Close();
connection.Dispose();
}
修改:using (OracleConnection connection = new OracleConnection(constr))
{
connection.Open();
using (OracleCommand command = new OracleCommand(sql, connection))
{
foreach (DataRow row in clDs.Tables[0].Rows)
{
command.Parameters.AddWithValue("id_call", row[0] == DBNull.Value ? DBNull.Value : rows[0]);
command.ExecuteNonQuery();
command.Parameters.Clear();
}
}
connection.Close();
}
try
{
command = new OracleCommand(sql, connection);//去掉
command.ExecuteNonQuery();
command.Dispose(); }
如果要优化,那么就应该外部添加一个空值参数id_call,
循环遍历中执行command.Parameters["id_call"] = ...