mysql-native v3.0.0
API Reference Home: [This Version] [Latest Version] [Other Versions]
Function query
Execute an SQL SELECT command or prepared statement.
ResultRange query
(
Connection conn,
const(char[]) sql,
ColumnSpecialization[] csa = null
);
ResultRange query(T...)
(
Connection conn,
const(char[]) sql,
T args
)
if (T .length > 0 && !is(T[0] == Variant[]) && !is(T[0] == ColumnSpecialization) && !is(T[0] == ColumnSpecialization[]));
ResultRange query
(
Connection conn,
const(char[]) sql,
std .variant .VariantN!(32L)[] args
);
ResultRange query
(
Connection conn,
ref Prepared prepared
);
ResultRange query(T...)
(
Connection conn,
ref Prepared prepared,
T args
)
if (T .length > 0 && !is(T[0] == Variant[]) && !is(T[0] == ColumnSpecialization) && !is(T[0] == ColumnSpecialization[]));
ResultRange query
(
Connection conn,
ref Prepared prepared,
std .variant .VariantN!(32L)[] args
);
ResultRange query
(
Connection conn,
ref BackwardCompatPrepared prepared
);
This returns an input range of Row
, so if you need random access
to the Row
elements, simply call
std
on the result.
If the SQL command does not produce a result set (such as INSERT/CREATE/etc),
then MYXNoResultRecieved
will be thrown. Use
exec
instead for such commands.
If args
is supplied, the sql string will automatically be used as a prepared
statement. Prepared statements are automatically cached by mysql-native,
so there's no performance penalty for using this multiple times for the
same statement instead of manually preparing a statement.
If args
and prepared
are both provided, args
will be used,
and any arguments that are already set in the prepared statement
will automatically be replaced with args
(note, just like calling
Prepared
, this will also remove all
ParameterSpecialization
that may have been applied).
Only use the const(char[]) sql
overload that doesn't take args
when you are not going to be using the same
command repeatedly and you are CERTAIN all the data you're sending is properly
escaped. Otherwise, consider using overload that takes a Prepared
.
If you need to use any ParameterSpecialization
, use
prepare
to manually create a Prepared
,
and set your parameter specializations using Prepared
or Prepared
.
Type Mappings
See the MySQL/D Type Mappings tables
Parameters
Name | Description |
---|---|
conn | An open Connection to the database. |
sql | The SQL command to be run. |
prepared | The prepared statement to be run. |
csa | Not yet implemented. |
Returns
A (possibly empty) ResultRange
.
Example
ResultRange oneAtATime = myConnection .query("SELECT * from `myTable`");
Row[] allAtOnce = myConnection .query("SELECT * from `myTable`") .array;
auto myInt = 7;
ResultRange rows = myConnection .query("SELECT * FROM `myTable` WHERE `a` = ?", myInt);