Starcounter 3.0 has the same SQL Query Processor as Starcounter 2.3.2. Please refer to the for the full specification.
Arbitrary database access
It is possible to perform arbitrary database access using Starcounter.Database.ISqlResult, Starcounter.Database.ISqlResultRow, and Starcounter.Database.ISqlResultColumn interfaces.
The following example demonstrates how to execute an arbitrary SQL query and retrieve its result.
transactor.Transact(db =>
{
// Retrieving SQL query result in an arbitrary form.
ISqlResult<ISqlResultRow> result = db.Sql<ISqlResultRow>("SELECT p.FirstName, p.LastName FROM Person p");
// Retrieving list of columns in the SQL result.
IReadOnlyList<ISqlResultColumn> columns = result.Columns;
// Iterating over each row in the SQL query result.
foreach (ISqlResultRow row in result)
{
// Iterating over each column in the SQL query result.
for (int i = 0; i < columns.Count; i++)
{
ISqlResultColumn col = columns[i];
// Printing the column's value of the current row.
Console.WriteLine($"{col.Name}: {row.GetValue(i)}");
}
Console.WriteLine();
}
});
Data Definition Language (DDL) Queries
As of right now the following DDL statements are supported:
Create / drop database index
CREATE INDEX IX_IndexName ON TableName (ColumnName)