blob: 55b02213e5ffac76316af2ae1f91a77c6117d067 (
plain)
1
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
using System;
using System.Collections.Generic;
using System.Data;
namespace Cmpp298.Assignment3.DataAccess {
public class DatabaseGateway : IDatabaseGateway {
private IDatabaseConnectionFactory _connectionFactory;
public DatabaseGateway( ) : this( new DatabaseConnectionFactory( ) ) {}
public DatabaseGateway( IDatabaseConnectionFactory connectionFactory ) {
_connectionFactory = connectionFactory;
}
public int InsertRowUsing( InsertQueryBuilder builder ) {
return ExecuteBuilderQuery( builder.Parameters, builder.ToString( ) );
}
public void UpdateRowUsing( UpdateQueryBuilder builder ) {
ExecuteBuilderQuery( builder.Parameters, builder.ToString( ) );
}
public void Execute( string query ) {
using ( IDbConnection connection = _connectionFactory.Create( ) ) {
IDbCommand command = connection.CreateCommand( );
connection.Open( );
command.CommandText = query;
command.ExecuteNonQuery( );
}
}
public DataTable GetTableFrom( SelectQueryBuilder builder ) {
return GetTableFrom( builder.ToString( ) );
}
private DataTable GetTableFrom( string sqlQuery ) {
using ( IDbConnection connection = _connectionFactory.Create( ) ) {
IDbCommand command = connection.CreateCommand( );
command.CommandText = sqlQuery;
connection.Open( );
IDataReader reader = command.ExecuteReader( );
DataTable table = new DataTable( );
table.Load( reader );
return table;
}
}
private int ExecuteBuilderQuery( ICollection< CommandParameter > parameters, string commandText ) {
object scalar;
using ( IDbConnection connection = _connectionFactory.Create( ) ) {
IDbCommand command = connection.CreateCommand( );
foreach ( CommandParameter parameter in parameters ) {
IDataParameter commandParameter = command.CreateParameter( );
commandParameter.ParameterName = "@" + parameter.ColumnName;
commandParameter.Value = parameter.Value;
command.Parameters.Add( commandParameter );
}
command.CommandText = commandText;
connection.Open( );
scalar = command.ExecuteScalar( );
}
return DBNull.Value != scalar ? Convert.ToInt32( scalar ) : -1;
}
}
}
|