类代码:
private int ExecuteNonQuery(string sql, IList<DbParameter> parameters, CommandType type, DbTransaction tran)
{
bool flag = false;
flag = this.CheckConnection();
using (DbCommand command = CreateDbCommand(sql, type, parameters, tran))
{
int affectedRows = -1;
try
{
affectedRows = command.ExecuteNonQuery();
command.Parameters.Clear();
}
catch (Exception ex)
{
this.CloseConnection();
throw new Exception(ex.Message);
}
if (flag && tran == null)
{
this.CloseConnection();
}
return affectedRows;
}
}
想办法获得DbCommand,这个对象有个方法:CreateParameter。
要获取DbCommand,可以想办法获取DbConnection,这个对象有一个CreateCommand的方法。
public abstract class DbParameter : MarshalByRefObject, IDbDataParameter, IDataParameter
=====================
if (flag && tran == null)
{
this.CloseConnection();
}
要获取DbCommand,可以想办法获取DbConnection 您的 “ DbConnection”呢??SqlConnection.......OdbcConnection?
我是问怎么构造出IList<DbParameter> 集合
@shenrq163:
IList<DbParameter> list = new List<DbParameter>();
list.Add(new SqlParameter("@Name","Angkor"));
list.Add(new SqlParameter("@Sex","Male"));
不多说了,看截图
如果有多个参数的话,那不是要创建多个DbParameter
@shenrq163: 这个静态方法,每调用一次AddField都会创建一个DbParameter并添加到IList里面。
坑跌,你的 IList<DbParameter>listParam 都没给值怎么可能运行?可以回答我吗?
上面的方法写错了,呵呵。以下是我程序中用到的代码,你可以参考一下,这里使用的是企业库entlib5。