Mercurial > hg > orthanc-databases
comparison Framework/MySQL/MySQLDatabase.cpp @ 24:17f849b2af34
sharing plugin initialization code
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 12 Jul 2018 12:17:39 +0200 |
parents | b2ff1cd2907a |
children | 6a574d810b98 |
comparison
equal
deleted
inserted
replaced
23:b2ff1cd2907a | 24:17f849b2af34 |
---|---|
298 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); | 298 throw Orthanc::OrthancException(Orthanc::ErrorCode_Database); |
299 } | 299 } |
300 } | 300 } |
301 | 301 |
302 | 302 |
303 static void CheckAlphanumericString(const std::string& name) | |
304 { | |
305 for (size_t i = 0; i < name.length(); i++) | |
306 { | |
307 if (!isalnum(name[i])) | |
308 { | |
309 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
310 } | |
311 } | |
312 } | |
313 | |
314 | |
315 bool MySQLDatabase::DoesTableExist(MySQLTransaction& transaction, | 303 bool MySQLDatabase::DoesTableExist(MySQLTransaction& transaction, |
316 const std::string& name) | 304 const std::string& name) |
317 { | 305 { |
318 if (mysql_ == NULL) | 306 if (mysql_ == NULL) |
319 { | 307 { |
320 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 308 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
321 } | 309 } |
322 | 310 |
323 CheckAlphanumericString(name); | 311 if (!IsAlphanumericString(name)) |
312 { | |
313 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
314 } | |
324 | 315 |
325 Query query("SELECT COUNT(*) FROM information_schema.TABLES WHERE " | 316 Query query("SELECT COUNT(*) FROM information_schema.TABLES WHERE " |
326 "(TABLE_SCHEMA = ${database}) AND (TABLE_NAME = ${table})", true); | 317 "(TABLE_SCHEMA = ${database}) AND (TABLE_NAME = ${table})", true); |
327 query.SetType("database", ValueType_Utf8String); | 318 query.SetType("database", ValueType_Utf8String); |
328 query.SetType("table", ValueType_Utf8String); | 319 query.SetType("table", ValueType_Utf8String); |
347 if (mysql_ == NULL) | 338 if (mysql_ == NULL) |
348 { | 339 { |
349 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 340 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
350 } | 341 } |
351 | 342 |
352 CheckAlphanumericString(name); | 343 if (!IsAlphanumericString(name)) |
344 { | |
345 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
346 } | |
353 | 347 |
354 Query query("SELECT COUNT(*) FROM information_schema.SCHEMATA " | 348 Query query("SELECT COUNT(*) FROM information_schema.SCHEMATA " |
355 "WHERE SCHEMA_NAME = ${database}", true); | 349 "WHERE SCHEMA_NAME = ${database}", true); |
356 query.SetType("database", ValueType_Utf8String); | 350 query.SetType("database", ValueType_Utf8String); |
357 | 351 |
462 | 456 |
463 void MySQLDatabase::GlobalFinalization() | 457 void MySQLDatabase::GlobalFinalization() |
464 { | 458 { |
465 mysql_library_end(); | 459 mysql_library_end(); |
466 } | 460 } |
461 | |
462 | |
463 bool MySQLDatabase::IsAlphanumericString(const std::string& s) | |
464 { | |
465 for (size_t i = 0; i < s.length(); i++) | |
466 { | |
467 if (!isalnum(s[i])) | |
468 { | |
469 return false; | |
470 } | |
471 } | |
472 | |
473 return true; | |
474 } | |
467 } | 475 } |