Chromium Code Reviews| Index: sql/statement.cc |
| diff --git a/sql/statement.cc b/sql/statement.cc |
| index a5daae49a6029f97b0950d4773a840cd5ac222cc..904d9ef4f1425ed4f37c192d2103e61e5c47a88e 100644 |
| --- a/sql/statement.cc |
| +++ b/sql/statement.cc |
| @@ -4,6 +4,8 @@ |
| #include "sql/statement.h" |
| +#include <algorithm> |
| + |
| #include "base/logging.h" |
| #include "base/utf_string_conversions.h" |
| #include "third_party/sqlite/sqlite3.h" |
| @@ -155,6 +157,23 @@ ColType Statement::ColumnType(int col) const { |
| return static_cast<ColType>(sqlite3_column_type(ref_->stmt(), col)); |
| } |
| +ColType Statement::DeclaredColumnType(int col) const { |
| + std::string column_type(sqlite3_column_decltype(ref_->stmt(), col)); |
| + std::transform(column_type.begin(), column_type.end(), column_type.begin(), |
| + ::tolower); |
| + |
| + if (column_type == "integer") |
| + return COLUMN_TYPE_INTEGER; |
| + else if (column_type == "float") |
| + return COLUMN_TYPE_FLOAT; |
| + else if (column_type == "text") |
| + return COLUMN_TYPE_TEXT; |
| + else if (column_type == "blob") |
| + return COLUMN_TYPE_BLOB; |
| + |
| + return COLUMN_TYPE_NULL; |
| +} |
| + |
| bool Statement::ColumnBool(int col) const { |
| return !!ColumnInt(col); |
| } |
| @@ -251,6 +270,19 @@ bool Statement::ColumnBlobAsVector( |
| return ColumnBlobAsVector(col, reinterpret_cast< std::vector<char>* >(val)); |
| } |
| +bool Statement::ColumnBlobAsString16(int col, string16* val) const { |
|
michaeln
2012/02/01 21:03:11
it be good to more closely match the impl of Colum
benm (inactive)
2012/02/02 12:14:49
Done.
|
| + if (!CheckValid()) |
| + return false; |
| + |
| + const void* data = sqlite3_column_blob(ref_->stmt(), col); |
| + int len = sqlite3_column_bytes(ref_->stmt(), col); |
| + if (data && len > 0) { |
| + val->resize(len); |
|
michaeln
2012/02/01 21:03:11
len/2 since resize(arg) is in characters whereas l
benm (inactive)
2012/02/02 12:14:49
Done.
|
| + val->assign(reinterpret_cast<const char16*>(data)); |
| + } |
| + return true; |
| +} |
| + |
| const char* Statement::GetSQLStatement() { |
| return sqlite3_sql(ref_->stmt()); |
| } |