some work for SELECT statement
git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1077 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -87,7 +87,8 @@ void DbExpression::field_before()
|
||||
if( !is_first_field )
|
||||
{
|
||||
if( output_type == MORM_OUTPUT_TYPE_DB_INSERT ||
|
||||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE )
|
||||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE ||
|
||||
output_type == MORM_OUTPUT_TYPE_SELECT_COLUMNS )
|
||||
{
|
||||
(*out_stream) << ",";
|
||||
}
|
||||
@@ -96,15 +97,70 @@ void DbExpression::field_before()
|
||||
{
|
||||
(*out_stream) << " AND ";
|
||||
}
|
||||
else
|
||||
if( output_type == MORM_OUTPUT_TYPE_WHERE_EQ ||
|
||||
output_type == MORM_OUTPUT_TYPE_WHERE_GE ||
|
||||
output_type == MORM_OUTPUT_TYPE_WHERE_GT ||
|
||||
output_type == MORM_OUTPUT_TYPE_WHERE_LE ||
|
||||
output_type == MORM_OUTPUT_TYPE_WHERE_LT )
|
||||
{
|
||||
int conjunction = MORM_CONJUNCTION_AND;
|
||||
|
||||
if( !conjunctions.empty() )
|
||||
{
|
||||
conjunction = conjunctions.back();
|
||||
}
|
||||
|
||||
if( conjunction == MORM_CONJUNCTION_AND )
|
||||
{
|
||||
(*out_stream) << " AND ";
|
||||
}
|
||||
else
|
||||
if( conjunction == MORM_CONJUNCTION_OR )
|
||||
{
|
||||
(*out_stream) << " OR ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DbExpression::put_name_value_separator()
|
||||
{
|
||||
if( output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY ||
|
||||
output_type == MORM_OUTPUT_TYPE_WHERE_EQ )
|
||||
{
|
||||
(*out_stream) << " = ";
|
||||
}
|
||||
else
|
||||
if( output_type == MORM_OUTPUT_TYPE_WHERE_LT )
|
||||
{
|
||||
(*out_stream) << " < ";
|
||||
}
|
||||
else
|
||||
if( output_type == MORM_OUTPUT_TYPE_WHERE_GT )
|
||||
{
|
||||
(*out_stream) << " > ";
|
||||
}
|
||||
else
|
||||
if( output_type == MORM_OUTPUT_TYPE_WHERE_LE )
|
||||
{
|
||||
(*out_stream) << " <= ";
|
||||
}
|
||||
else
|
||||
if( output_type == MORM_OUTPUT_TYPE_WHERE_GE )
|
||||
{
|
||||
(*out_stream) << " >= ";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DbExpression::before_field_value_string()
|
||||
{
|
||||
if( output_type == MORM_OUTPUT_TYPE_DB_INSERT ||
|
||||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE ||
|
||||
output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY )
|
||||
// if( output_type == MORM_OUTPUT_TYPE_SELECT_COLUMNS ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_INSERT ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_UPDATE ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY )
|
||||
{
|
||||
(*out_stream) << "'";
|
||||
}
|
||||
@@ -112,9 +168,10 @@ void DbExpression::before_field_value_string()
|
||||
|
||||
void DbExpression::after_field_value_string()
|
||||
{
|
||||
if( output_type == MORM_OUTPUT_TYPE_DB_INSERT ||
|
||||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE ||
|
||||
output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY )
|
||||
// if( output_type == MORM_OUTPUT_TYPE_SELECT_COLUMNS ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_INSERT ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_UPDATE ||
|
||||
// output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY )
|
||||
{
|
||||
(*out_stream) << "'";
|
||||
}
|
||||
@@ -126,22 +183,81 @@ void DbExpression::before_field_value(const std::wstring &)
|
||||
before_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::before_field_value(const std::string &)
|
||||
{
|
||||
before_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::after_field_value(const std::wstring &)
|
||||
{
|
||||
after_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::before_field_value(const std::string &)
|
||||
{
|
||||
before_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::after_field_value(const std::string &)
|
||||
{
|
||||
after_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::before_field_value(const wchar_t *)
|
||||
{
|
||||
before_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::after_field_value(const wchar_t *)
|
||||
{
|
||||
after_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::before_field_value(const char *)
|
||||
{
|
||||
before_field_value_string();
|
||||
}
|
||||
|
||||
void DbExpression::after_field_value(const char *)
|
||||
{
|
||||
after_field_value_string();
|
||||
}
|
||||
|
||||
|
||||
void DbExpression::prepare_to_where_clause()
|
||||
{
|
||||
work_mode = MORM_WORK_MODE_MODEL_FIELDS_VALUES;
|
||||
conjunctions.clear();
|
||||
is_first_field = true;
|
||||
}
|
||||
|
||||
|
||||
DbExpression & DbExpression::group_or()
|
||||
{
|
||||
field_before();
|
||||
(*out_stream) << "(";
|
||||
is_first_field = true;
|
||||
conjunctions.push_back(MORM_CONJUNCTION_OR);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
DbExpression & DbExpression::group_and()
|
||||
{
|
||||
field_before();
|
||||
(*out_stream) << "(";
|
||||
is_first_field = true;
|
||||
conjunctions.push_back(MORM_CONJUNCTION_AND);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
DbExpression & DbExpression::group_end()
|
||||
{
|
||||
if( !conjunctions.empty() )
|
||||
{
|
||||
conjunctions.pop_back();
|
||||
(*out_stream) << ")";
|
||||
field_after();
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user