Query scripting
Helper functions for working with SQL query text.
Format
Value formatter class for SQL queries.
Energy.Query.Format format;
format = new Energy.Query.Format();
// or use global default which is obviously not recommended
format = Energy.Query.Format.Global;
Text
Format object value as TEXT.
Null values will be represented as “NULL”.
public string Text(string value)
Format object value as TEXT.
When nullify parameter is set to true, null values will be represented as “NULL” instead of “’’”.
string Text(string value, bool nullify)
Format object value as TEXT with limited length.
string Text(string text, int limit)
Unicode
Format as Unicode TEXT.
Null values will be represented as “NULL”.
string Unicode(string value)
string Unicode(object value)
Format as Unicode TEXT.
When nullify parameter is set to true, null values will be represented as “NULL” instead of “’’”.
string Unicode(string value, bool nullify)
string Unicode(object value, bool nullify)
Number
Format as NUMBER.
Real numbers are represented with dot “.” as decimal point separator.
string Number(object value)
string Number(object value, bool nullify)
Integer
Format as INTEGER.
string Integer(int number)
Take only integer part of number.
string Integer(double number)
string Integer(decimal number)
Format as INTEGER.
Returns “1” for true and “0” for false.
string Integer(bool number)
Date
Format as DATE.
Represents date as quoted date string using “YYYY-MM-DD” format.
string Date(DateTime value)
string Date(object value)
Time
Format as TIME.
Uses 24h “hh:mm:ss” format.
Milliseconds will be used if present.
string Time(DateTime value)
string Time(object value)
Stamp
Format as DATETIME.
Uses by default “YYYY-MM-DD hh:mm:ss” format or “YYYY-MM-DDThh:mm:ss” depending on settings.
string Stamp(DateTime value)
string Stamp(object value)
Type
Definition
Represents SQL database type definition from a string like “NVARCHAR(20) NOT NULL”.
class Energy.Query.Type.Definition
{
/// <summary>
/// Represents type name.
/// Example "VARCHAR".
/// </summary>
public string Type;
/// <summary>
/// Represents type parameter string.
/// Example: "(9,2)".
/// </summary>
public string Parameter;
/// <summary>
/// Represents default option.
/// Example: "DEFAULT ''"
/// </summary>
public string Default;
/// <summary>
/// Represents nullable.
/// Example "NOT NULL";
/// </summary>
public string Null;
}
Simplify
Simplify type.
IsNumeric
Check if SQL type is numeric.
bool Energy.Query.Type.IsNumeric(string type)
IsNullable
Check if SQL type is nullable.
bool Energy.Query.Type.IsNullable(string type)
Parameter
Support class for parametrized queries.
Bag
Represents list of parameters and their values. Use it to define parameters for parametrized query and to parse it.
Energy.Query.Parameter.Bag bag = new Energy.Query.Parameter.Bag();
bag.Set("param1", "value1");
bag.Set("param2", "value2");
string query = "INSERT INTO table1 ( column1 , column2 ) VALUES ( @param1 , @param2 )";
string result = bag.Parse(query);
// expect "INSERT INTO table1 ( column1 , column2 ) VALUES ( 'value1' , 'value2' )";
This class also offers several options which may be set for proper parameter parsing process.
Explicit
Parameters must be explicitly defined.
NullAsZero
Parse null values as numeric zero.
Unicode
Use N prefix for all non empty texts (Unicode).
UnknownAsEmpty
Parse unknown parameters as empty texts. Does not apply to parameters with names with leading @@ (double at sign).
UnknownAsNull
Parse unknown parameters as NULL. Does not apply to parameters with names with leading @@ (double at sign).
bag.Unicode = true;
bag.UnknownAsNull = true;
Template
Support for query templates.
ConvertToParameterizedQuery
Convert SQL query template which uses angle brackets to parameterized query which uses at sign to define parameters.
string template = @"
INSERT INTO [dbo].[Orders]
([number]
,[order date]
)
VALUES
(<number , nvarchar(35),>
,<order date , date,>
)
GO
";
result = Energy.Query.Parameter.Template.ConvertToParameterizedQuery(template);
// expect "INSERT INTO [dbo].[Orders] ([number],[order date]) VALUES (@number,@order_date)"
Quote
Quote string value using apostrophe (’) as quotation mark. Function will return “NULL” if value is null.Exchange
string Energy.Query.Text.Quote(string value)
Quote string value using specified quotation mark. Use apostrophe (’) for values and quotes (”) for database object names. Function will return “NULL” if value is null.
string Energy.Query.Text.Quote(string value, char quote)
second)
Quote string value using specified quotation mark. Use apostrophe (’) for values and quotes (”) for database object names. Specify text to be returned when value is null or pass null to use default “NULL”.
string Energy.Query.Text.Quote(string value, char quote, string nullText)
Quote string value using specified quotation mark. You might use square parenthesis ([]) to use T-SQL style quotation for database object names. Function will return “NULL” if value is null.
string Energy.Query.Text.Quote(string value, string quote)
Quote string value using specified quotation mark. You might use square parenthesis ([]) to use T-SQL style quotation for database object names. Specify text to be returned when value is null or pass null to use default “NULL”.
string Energy.Query.Text.Quote(string value, string quote, string nullText)
Strip
Strip quotation from a value.
Return null if nullText parameter is specified and value equals to it.
string Energy.Query.Text.Strip(string value, string quote, string nullText)
Includes support for apostrophes, quotation marks, square brackets or unquoted values.
string Energy.Query.Text.Strip(string value, string quote, string nullText)
Definition
Represents SQL database type definition from a string like “NVARCHAR(20) NOT NULL”.
Energy.Query.Definition def = Energy.Query.Type.ExtractTypeDefinition("VARCHAR(20) NULL DEFAULT ''");
Type
Represents type name. Example “VARCHAR”.
Simple
Represents simplified type name.
Parameter
Represents type parameter string. Example: “(9,2)”.
Size
Size option.
ExtractTypeDefinition
Extract SQL data type for declaration string like “VARCHAR(50)”
Energy.Query.Definition def = Energy.Query.Type.ExtractTypeDefinition("VARCHAR(50)");