Пример #1
0
inline
void
CheckNULL(const CDB_Object& value)
{
    if (value.IsNULL()) {
        DATABASE_DRIVER_ERROR("Trying to access a NULL value.", 101100);
    }
}
Пример #2
0
inline
TO Convert_CDB_ObjectSql_DT(const CDB_Object& value)
{
    if (value.IsNULL()) {
       return TO();
    }

    const EDB_Type cur_type = value.GetType();

    switch (cur_type) {
        case eDB_DateTime:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_DateTime&>(value).Value()), TO);
        case eDB_SmallDateTime:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_SmallDateTime&>(value).Value()), TO);
        default:
            ReportTypeConvError(cur_type, "bool");
    }

    return  TO();
}
Пример #3
0
inline
TO Convert_CDB_ObjectSql(const CDB_Object& value)
{
    if (value.IsNULL()) {
       return TO();
    }

    const EDB_Type cur_type = value.GetType();

    switch (cur_type) {
        case eDB_BigInt:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_BigInt&>(value).Value()), TO);
        case eDB_Int:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_Int&>(value).Value()), TO);
        case eDB_SmallInt:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_SmallInt&>(value).Value()), TO);
        case eDB_TinyInt:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_TinyInt&>(value).Value()), TO);
        case eDB_Bit:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_Bit&>(value).Value()), TO);
        case eDB_Float:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_Float&>(value).Value()), TO);
        case eDB_Double:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_Double&>(value).Value()), TO);
        case eDB_Numeric:
            return NCBI_CONVERT_TO(Convert(static_cast<const CDB_Numeric&>(value).Value()), TO);
        case eDB_Char:
        case eDB_VarChar:
        case eDB_LongChar:
            {
                const CDB_String& cdb_str = static_cast<const CDB_String&>(value);
                const string& str = cdb_str.Value();
                return Convert(str);
            }
        case eDB_Binary:
            return Convert(string(
                static_cast<const char*>(static_cast<const CDB_Binary&>(value).Value()),
                static_cast<const CDB_Binary&>(value).Size()
            ));
        case eDB_VarBinary:
            return Convert(string(
                static_cast<const char*>(static_cast<const CDB_VarBinary&>(value).Value()),
                static_cast<const CDB_VarBinary&>(value).Size()
            ));
        case eDB_LongBinary:
            return Convert(string(
                static_cast<const char*>(static_cast<const CDB_LongBinary&>(value).Value()),
                static_cast<const CDB_LongBinary&>(value).DataSize()
            ));
        case eDB_Text:
        case eDB_Image: 
            {
                string result;
                CDB_Stream& strm = const_cast<CDB_Stream&>(static_cast<const CDB_Stream&>(value));
                result.resize(strm.Size());
                strm.Read(const_cast<void*>(static_cast<const void*>(result.c_str())),
                        strm.Size()
                        );
                return Convert(result);
            }
        default:
            ReportTypeConvError(cur_type, "bool");
    }

    return  TO();
}