query method
Execute a query and return all rows as a list.
This is a convenience method that executes a query and fetches all results into memory. The statement is automatically closed after fetching.
Parameters:
sql: The SQL SELECT statement to executeparams: Optional list of bind parameters (positional binding)
Returns: A list of maps, where each map represents a row with column names as keys.
Example - Basic Query:
final results = await connection.query(
'SELECT id, name, salary FROM employees WHERE dept_id = :1',
params: [10],
);
for (final row in results) {
print('Employee ${row['name']} earns ${row['salary']}');
}
Example - No Parameters:
final departments = await connection.query('SELECT * FROM departments');
print('Found ${departments.length} departments');
Warning: This method loads all results into memory. For large result sets (10,000+ rows), consider using execute with streaming instead:
final stmt = await connection.execute(sql);
await for (final row in stmt.rows()) {
// Process one row at a time
}
Supported Parameter Types:
String- VARCHAR2, CHARint- NUMBER (integer)double- NUMBER (decimal)null- NULL value
See also:
- execute for streaming large result sets
- executeUpdate for DML operations
Implementation
Future<List<Map<String, dynamic>>> query(String sql, {List<dynamic>? params, Map<String, dynamic>? namedParams}) async {
final statement = await execute(sql, params: params, namedParams: namedParams);
try {
final results = <Map<String, dynamic>>[];
await for (final row in statement.rows()) {
results.add(row);
}
return results;
} finally {
await statement.close();
}
}