public GxMySQLConnectorCursorDataReader(IGxConnectionManager connManager, GxDataRecord dr, IGxConnection connection, GxParameterCollection parameters, string stmt, int fetchSize, bool forFirst, int handle, bool cached, SlidingTime expiration, bool hasNested, bool dynStmt) { this.parameters = parameters; this.stmt = stmt; this.fetchSize = fetchSize; this.cache = connection.ConnectionCache; this.cached = cached; this.handle = handle; this.isForFirst = forFirst; _connManager = connManager; this.m_dr = dr; this.readBytes = 0; this.dynStmt = dynStmt; con = _connManager.IncOpenHandles(handle, m_dr.DataSource); con.CurrentStmt = stmt; con.MonitorEnter(); GXLogging.Debug(log, "Open GxMySQLCursorDataReader handle:'" + handle); MySQLCommand cmd = (MySQLCommand)dr.GetCommand(con, stmt, parameters); reader = cmd.ExecuteReader(); cache.SetAvailableCommand(stmt, false, dynStmt); open = true; block = new GxArrayList(fetchSize); pos = -1; if (cached) { key = SqlUtil.GetKeyStmtValues(parameters, stmt, isForFirst); this.expiration = expiration; } }
/// <inheritdoc /> public async Task <ResultSet <T> > SelectAsync <T>(string query, Dictionary <string, dynamic> bindings = null) where T : Model <T>, new() { using var connection = new Connection(ConnectionString); await connection.OpenAsync(); using var command = new Command(query, connection); BindParameters(command, bindings); using var reader = await command.ExecuteReaderAsync(); ResultSet <T> resultSet = new ResultSet <T>(); if (Manager.DebugMode) { Manager.Logger(query); } while (await reader.ReadAsync()) { ResultRow <T> resultRow = new ResultRow <T>(); for (int column = 0; column < reader.FieldCount; column++) { resultRow.Columns.Add(reader.GetName(column), reader.GetValue(column)); } resultSet.Rows.Add(resultRow); } return(resultSet); }
private static void BindParameters(Command command, Dictionary <string, dynamic> parameters = null) { if (parameters != null) { foreach (var parameter in parameters) { command.Parameters.AddWithValue(parameter.Key, parameter.Value); } } }
public override IDbCommand GetCommand(IGxConnection con, string stmt, GxParameterCollection parameters, bool isCursor, bool forFirst, bool isRpc) { if (isRpc) { stmt = convertToMySqlCall(stmt, parameters); } MySQLCommand mysqlcmd = (MySQLCommand)base.GetCommand(con, stmt, parameters.Distinct()); if (isCursor && !isRpc) { mysqlcmd.Prepare(); } return(mysqlcmd); }
/// <inheritdoc /> public async Task DeleteAsync(string query, Dictionary <string, dynamic> bindings = null) { using var connection = new Connection(ConnectionString); await connection.OpenAsync(); using var command = new Command(query, connection); BindParameters(command, bindings); await command.ExecuteNonQueryAsync(); if (Manager.DebugMode) { Manager.Logger(query); } }
/// <inheritdoc /> public void Update(string query, Dictionary <string, dynamic> bindings = null) { using var connection = new Connection(ConnectionString); connection.Open(); using var command = new Command(query, connection); BindParameters(command, bindings); command.ExecuteNonQuery(); if (Manager.DebugMode) { Manager.Logger(query); } }
/// <inheritdoc /> public async Task <int> InsertAsync(string query, Dictionary <string, dynamic> bindings = null) { using var connection = new Connection(ConnectionString); await connection.OpenAsync(); using var command = new Command(query, connection); BindParameters(command, bindings); await command.ExecuteNonQueryAsync(); if (Manager.DebugMode) { Manager.Logger(query); } return(Convert.ToInt32(command.LastInsertedId)); }