@@ -10,6 +10,8 @@ public abstract class Database
1010 public delegate void SqlExecution ( IDbConnection connection , IDbTransaction transaction ) ;
1111 public delegate Task AsyncSqlExecution ( IDbConnection connection , IDbTransaction transaction ) ;
1212
13+ public delegate void ReadSqlResult ( SqlResult result ) ;
14+
1315 public async Task ProcessAsync ( AsyncSqlExecution execute )
1416 {
1517
@@ -60,6 +62,68 @@ public void Process(SqlExecution execute)
6062 }
6163
6264 protected abstract IDbConnection CreateConnection ( ) ;
65+ protected abstract IDbDataParameter CreateDbDataParameter ( String name , Object value ) ;
66+
67+ public static int ExecuteNonQuery (
68+ string sql ,
69+ IDbDataParameter [ ] parameters ,
70+ IDbConnection connection ,
71+ IDbTransaction transaction )
72+ {
73+ using ( var command = connection . CreateCommand ( ) )
74+ {
75+ command . Transaction = transaction ;
76+
77+ command . CommandText = sql ;
78+ SetParameters ( command , parameters ) ;
79+
80+ return command . ExecuteNonQuery ( ) ;
81+
82+ }
83+ }
84+
85+
86+ public static int ExecuteNonQuery (
87+ string sql ,
88+ IDbConnection connection ,
89+ IDbTransaction transaction )
90+ {
91+ return ExecuteNonQuery ( sql , new IDbDataParameter [ 0 ] , connection , transaction ) ;
92+ }
93+
94+
95+ public static void Query (
96+ string sql ,
97+ IDbDataParameter [ ] parameters ,
98+ IDbConnection connection ,
99+ IDbTransaction transaction ,
100+ ReadSqlResult readResult )
101+ {
102+ using ( var result = new SqlResult ( sql , parameters , connection , transaction ) )
103+ {
104+ result . Init ( ) ;
105+ readResult ( result ) ;
106+ }
107+ }
108+
109+
110+ public static void Query (
111+ string sql ,
112+ IDbConnection connection ,
113+ IDbTransaction transaction ,
114+ ReadSqlResult readResult )
115+ {
116+ Query ( sql , new IDbDataParameter [ 0 ] , connection , transaction , readResult ) ;
117+ }
118+
119+
120+ internal static void SetParameters ( IDbCommand command , IDbDataParameter [ ] parameters )
121+ {
122+ foreach ( var parameter in parameters )
123+ {
124+ command . Parameters [ parameter . ParameterName ] = parameter ;
125+ }
126+ }
63127
64128 }
65129}
0 commit comments