| 216 | } |
| 217 | |
| 218 | DBResult SqResults::GetString(unsigned int columnId, const char **pString, size_t *_length) |
| 219 | { |
| 220 | SqField *field = GetField(columnId); |
| 221 | if (!field) |
| 222 | { |
| 223 | return DBVal_Error; |
| 224 | } |
| 225 | |
| 226 | DBResult res = DBVal_Data; |
| 227 | const char *ptr = NULL; |
| 228 | size_t length = 0; |
| 229 | if (field->type == SQLITE_TEXT || field->type == SQLITE_BLOB) |
| 230 | { |
| 231 | ptr = m_Strings.GetString(field->u.idx); |
| 232 | length = field->size; |
| 233 | } else if (field->type == SQLITE_INTEGER) { |
| 234 | char number[24]; |
| 235 | field->size = UTIL_Format(number, sizeof(number), "%d", field->u.idx); |
| 236 | field->type = SQLITE_TEXT; |
| 237 | field->u.idx = m_Strings.AddString(number); |
| 238 | ptr = m_Strings.GetString(field->u.idx); |
| 239 | length = field->size; |
| 240 | } else if (field->type == SQLITE_FLOAT) { |
| 241 | char number[24]; |
| 242 | field->size = UTIL_Format(number, sizeof(number), "%f", field->u.f); |
| 243 | field->type = SQLITE_TEXT; |
| 244 | field->u.idx = m_Strings.AddString(number); |
| 245 | ptr = m_Strings.GetString(field->u.idx); |
| 246 | length = field->size; |
| 247 | } else if (field->type == SQLITE_NULL) { |
| 248 | res = DBVal_Null; |
| 249 | } |
| 250 | |
| 251 | if (!ptr) |
| 252 | { |
| 253 | ptr = ""; |
| 254 | } |
| 255 | |
| 256 | if (pString) |
| 257 | { |
| 258 | *pString = ptr; |
| 259 | } |
| 260 | if (_length) |
| 261 | { |
| 262 | *_length = length; |
| 263 | } |
| 264 | |
| 265 | return res; |
| 266 | } |
| 267 | |
| 268 | DBResult SqResults::CopyString(unsigned int columnId, char *buffer, size_t maxlength, size_t *written) |
| 269 | { |
no test coverage detected