void RepoQuery::bindStaticString(const char* paramName, const StringData* sd) { if (sd == nullptr) { bindNull(paramName); } else { bindText(paramName, sd->data(), sd->size(), true); } }
int SQLiteStatement::bindValue(int index, const SQLValue& value) { switch (value.getType()) { case SQLValue::StringValue: return bindText(index, value.string()); case SQLValue::NumberValue: return bindDouble(index, value.number()); case SQLValue::NullValue: return bindNull(index); } ASSERT_NOT_REACHED(); return SQLITE_ERROR; }
void Database::Query::bindValue(int paramIndex, const DataValue& value) { switch (value.getType()) { case DataValue::TYPE_VOID: case DataValue::TYPE_NULL: bindNull(paramIndex); break; case DataValue::TYPE_BOOL: bind(paramIndex, DataValue(value).toInt()); break; case DataValue::TYPE_INT: bind(paramIndex, value.getData<int>()); break; case DataValue::TYPE_INT64: bind(paramIndex, value.getData<int64>()); break; case DataValue::TYPE_FLOAT: bind(paramIndex, value.getData<float>()); break; case DataValue::TYPE_DOUBLE: bind(paramIndex, value.getData<double>()); break; case DataValue::TYPE_STRING: bind(paramIndex, value.getStringPtr(), value.getStringSize()); break; case DataValue::TYPE_BLOB: bindBlob(paramIndex, value.getBlobPtr(), value.getBlobSize()); break; case DataValue::TYPE_TIMESTAMP: bind(paramIndex, value.getData<Timestamp>().getUnixTime64()); break; // types which sqlite doesn't support natively are treated as blob case DataValue::TYPE_FLOAT2: case DataValue::TYPE_FLOAT3: case DataValue::TYPE_FLOAT4: case DataValue::TYPE_FLOAT3X3: case DataValue::TYPE_FLOAT4X4: case DataValue::TYPE_VECTOR2: case DataValue::TYPE_VECTOR3: case DataValue::TYPE_VECTOR4: case DataValue::TYPE_QUAT: case DataValue::TYPE_MATRIX3: case DataValue::TYPE_MATRIX4: { DataValue copy(value); size_t size; const void* blob = copy.toBlob(&size); bindBlob(paramIndex, blob, size); } break; case DataValue::TYPE_ARRAY: bind(paramIndex, DataValue(value).toBuffer()); case DataValue::TYPE_RECORD: bind(paramIndex, DataValue(value).toBuffer()); case DataValue::TYPE_OBJECT: bind(paramIndex, DataValue(value).toBuffer()); case DataValue::TYPE_BUFFER: bind(paramIndex, value.getRef<MemoryBuffer>()); break; default: NIT_THROW(EX_NOT_SUPPORTED); } }
void CppSQLite3Statement::bindNull(const char* szParam) { int nParam = bindParameterIndex(szParam); bindNull(nParam); }
Statement &Statement::bindNull(const char *parameter) { return bindNull(getParameterPos(parameter)); }