执行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
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在以上的代码中,函数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
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在实际类的构造函数中,将数组values的值赋值到实体类中,如下:
![](/Images/OutliningIndicators/ContractedBlock.gif)