Пример #1
0
void RepoQuery::bindStaticString(const char* paramName, const StringData* sd) {
  if (sd == nullptr) {
    bindNull(paramName);
  } else {
    bindText(paramName, sd->data(), sd->size(), true);
  }
}
Пример #2
0
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;
}
Пример #3
0
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);
	}
}
Пример #4
0
void CppSQLite3Statement::bindNull(const char* szParam)
{
	int nParam = bindParameterIndex(szParam);
	bindNull(nParam);
}
Пример #5
0
Statement &Statement::bindNull(const char *parameter)
{
    return bindNull(getParameterPos(parameter));
}