直接说问题:调用DBHelper类时,在一个同一个方法中调用了两个数据操作方法,以下为测试代码:
调用代码:
class Program
{
static void Main(string[] args)
{
string sql = "SELECT * FROM dbo.LS_StatementDetail WHERE ApplyCode=@ApplyCode AND ObjectCode=@ObjectCode";
SqlParameter [] parameter= {
new SqlParameter("@ApplyCode","C20180202100321292"),
new SqlParameter("@ObjectCode","20180202163627977")
};
int i=api.DBHelper.SQLHelper.ExecuteNonQuery(sql,parameter);
DataTable dt = api.DBHelper.SQLHelper.ExecuteDataTable(sql, parameter);
Console.WriteLine("parameter", parameter);
Console.WriteLine("影响的行数i:{0}", i);
Console.ReadLine();
}
}
数据库帮助类中的两个操作方法:
方法一:
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
SqlConnection conn = null;
conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd = conn.CreateCommand();
cmd.CommandText = sql;
//cmd.Parameters.Clear();
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
int i= cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return i;
}
方法二:
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnStr"].ToString();
SqlConnection conn = null;
using (conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
//cmd.Parameters.Clear();
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
DataTable dt = dataset.Tables[0];
cmd.Parameters.Clear();
return dt;
}
}
奇怪的问题就来了:我在方法的前面Clear(),就没有效果依然会报错,而我在方法的后面Clear()便成功清理了参数。希望查阅资料后能找出答案,路过的大神看到也请指教下,不过好在问题是解决了。