From 330be9feefb6394479553be0e078b4c4df3cbff1 Mon Sep 17 00:00:00 2001 From: mo khan Date: Sun, 26 Aug 2007 20:10:42 -0600 Subject: import from svn --- .../DatabaseGateway.cs | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/app/Cmpp298.Assignment3.DataAccess/DatabaseGateway.cs (limited to 'src/app/Cmpp298.Assignment3.DataAccess/DatabaseGateway.cs') diff --git a/src/app/Cmpp298.Assignment3.DataAccess/DatabaseGateway.cs b/src/app/Cmpp298.Assignment3.DataAccess/DatabaseGateway.cs new file mode 100644 index 0000000..55b0221 --- /dev/null +++ b/src/app/Cmpp298.Assignment3.DataAccess/DatabaseGateway.cs @@ -0,0 +1,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; + } + } +} \ No newline at end of file -- cgit v1.2.3