执行sql语句函数(query表示sql查询语句,tablename也可以理解为表名,但实际的作用是映射到相对应的实体类):
1
private IList ExecuteSQL( string query,string tablename)
2
{
3
IList result = new ArrayList();
4
ISessionFactoryImplementor s = (ISessionFactoryImplementor)_cfg.BuildSessionFactory();
5
IDbCommand cmd = s.ConnectionProvider.Driver.CreateCommand();
6
cmd.CommandText = query;
7
IDbConnection conn = s.OpenConnection();
8
try
9
{
10
cmd.Connection = conn;
11
IDataReader rs = cmd.ExecuteReader();
12
int j = 0 ;
13
while ( rs.Read() )
14
{
15
int fieldCount = rs.FieldCount;
16
object[] values = new Object[ fieldCount ];
17
for ( int i = 0; i < fieldCount; i ++ )
18
values[i] = rs.GetValue(i);
19
chooseEntity(result,tablename,values);
20
}
21
}
22
finally
23
{
24
s.CloseConnection(conn);
25
}
26
return result;
27
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

在以上的代码中,函数chooseEntity就是对查询的结的转换,如下:
1
private void chooseEntity(IList result,string tablename,object[] values)
2
{
3
switch(tablename)
4
{
5
case "tbl_b_AcceptConiteminfo":
6
AcceptConIteminfo accConitem = new AcceptConIteminfo(values);
7
result.Add( accConitem );
8
break;
9
}
10
}

2

3

4

5

6

7

8

9

10

在实际类的构造函数中,将数组values的值赋值到实体类中,如下:
