现在的位置: 首页 > 综合 > 正文

Nhibernate 执行存储过程的方法

2012年12月18日 ⁄ 综合 ⁄ 共 906字 ⁄ 字号 评论关闭

public IList ExecuteStoredProc( string spName, ICollection paramInfos ) {
IList result = new ArrayList();

ISessionFactoryImplementor s = (ISessionFactoryImplementor)cfg.BuildSessionFactory();
IDbCommand cmd = s.ConnectionProvider.Driver.CreateCommand();

cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure;

// 加入参数
if ( paramInfos != null ) {
foreach( ParamInfo info in paramInfos ) {
IDbDataParameter parameter = cmd.CreateParameter();
parameter.ParameterName = info.name; // driver.FormatNameForSql( info.Name );
parameter.Value = info.Value;
cmd.Parameters.Add( parameter );
}
}

IDbConnection conn = s.OpenConnection();
try {
cmd.Connection = conn;
IDataReader rs = cmd.ExecuteReader();

while ( rs.Read() ) {
int fieldCount = rs.FieldCount;
object[] values = new Object[ fieldCount ];
for ( int i = 0; i values[i] = rs.GetValue(i);
result.Add( values );
}
}
finally {
s.CloseConnection(conn);
}

return result;
}

其中ParamInfo为存储参数信息的结构, 定义如下:
public struct ParamInfo {
public string Name;
public object Value;
}

抱歉!评论已关闭.