2023年6月21日发(作者:)

C#执⾏存储提⽰指定参数太多昨天晚上写程序执⾏存储过程 调⽤以下函数 ///

/// 执⾏存储过程,并返回查询所返回的结果集中第⼀⾏的第⼀列。忽略额外的列或⾏ /// /// 存储过程名称 /// 存储过程参数 /// 返回值为object 使⽤时需要拆箱操作

public static object ExecScalar( string proName,SqlParameter[] param) { object obj=new object(); try { OpenConn(); dType = Procedure; dText = proName; for(int i = 0; i < ; i++) { (param[i]); } obj = eScalar();

} catch(Exception e) { throw new Exception(e); } finally { CloseConn();

} return obj; }在第⼀次运⾏可以正常执⾏,第⼆次运⾏提⽰存储指定参数太多,把以上函数改为下⾯的代码可以执⾏正常 ///

/// 执⾏存储过程,并返回查询所返回的结果集中第⼀⾏的第⼀列。忽略额外的列或⾏ /// /// 存储过程名称 /// 存储过程参数 /// 返回值为object 使⽤时需要拆箱操作

public static object ExecScalar( string proName,SqlParameter[] param) { object obj=new object(); try { OpenConn(); dType = Procedure; dText = proName; for(int i = 0; i < ; i++) { (param[i]); } obj = eScalar();

} catch(Exception e) { throw new Exception(e); } finally { CloseConn(); (); //注意这⼀句 解决参数太多问题的关键 } return obj; }原因应该是第⼀次调⽤的SqlParameter参数在SqlCommand的参数列表中未被释放 ⽽⼆次调⽤⼜传⼊参数导致SqlCommand中的参数数量递增,这样就导致了参数太多的错误。在程序中增加();⽅法在每次执⾏完存储过程的时候就释放SqlCommand的参数列表,这样在每次调⽤执⾏存储过程时就是本次传⼊的正确参数。我的理解是这样的。

2023年6月21日发(作者:)

C#执⾏存储提⽰指定参数太多昨天晚上写程序执⾏存储过程 调⽤以下函数 ///

/// 执⾏存储过程,并返回查询所返回的结果集中第⼀⾏的第⼀列。忽略额外的列或⾏ /// /// 存储过程名称 /// 存储过程参数 /// 返回值为object 使⽤时需要拆箱操作

public static object ExecScalar( string proName,SqlParameter[] param) { object obj=new object(); try { OpenConn(); dType = Procedure; dText = proName; for(int i = 0; i < ; i++) { (param[i]); } obj = eScalar();

} catch(Exception e) { throw new Exception(e); } finally { CloseConn();

} return obj; }在第⼀次运⾏可以正常执⾏,第⼆次运⾏提⽰存储指定参数太多,把以上函数改为下⾯的代码可以执⾏正常 ///

/// 执⾏存储过程,并返回查询所返回的结果集中第⼀⾏的第⼀列。忽略额外的列或⾏ /// /// 存储过程名称 /// 存储过程参数 /// 返回值为object 使⽤时需要拆箱操作

public static object ExecScalar( string proName,SqlParameter[] param) { object obj=new object(); try { OpenConn(); dType = Procedure; dText = proName; for(int i = 0; i < ; i++) { (param[i]); } obj = eScalar();

} catch(Exception e) { throw new Exception(e); } finally { CloseConn(); (); //注意这⼀句 解决参数太多问题的关键 } return obj; }原因应该是第⼀次调⽤的SqlParameter参数在SqlCommand的参数列表中未被释放 ⽽⼆次调⽤⼜传⼊参数导致SqlCommand中的参数数量递增,这样就导致了参数太多的错误。在程序中增加();⽅法在每次执⾏完存储过程的时候就释放SqlCommand的参数列表,这样在每次调⽤执⾏存储过程时就是本次传⼊的正确参数。我的理解是这样的。