Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: app/sql/connection.cc

Issue 201099: Convert the sqlite cookie database and web database to use the new sqlite... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « app/sql/connection.h ('k') | app/sql/statement.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "app/sql/connection.h" 5 #include "app/sql/connection.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "app/sql/statement.h" 9 #include "app/sql/statement.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 sqlite3_stmt* stmt = NULL; 217 sqlite3_stmt* stmt = NULL;
218 if (sqlite3_prepare_v2(db_, sql, -1, &stmt, NULL) != SQLITE_OK) { 218 if (sqlite3_prepare_v2(db_, sql, -1, &stmt, NULL) != SQLITE_OK) {
219 // Treat this as non-fatal, it can occur in a number of valid cases, and 219 // Treat this as non-fatal, it can occur in a number of valid cases, and
220 // callers should be doing their own error handling. 220 // callers should be doing their own error handling.
221 DLOG(WARNING) << "SQL compile error " << GetErrorMessage(); 221 DLOG(WARNING) << "SQL compile error " << GetErrorMessage();
222 return new StatementRef(this, NULL); 222 return new StatementRef(this, NULL);
223 } 223 }
224 return new StatementRef(this, stmt); 224 return new StatementRef(this, stmt);
225 } 225 }
226 226
227 bool Connection::DoesTableExist(const char* table_name) { 227 bool Connection::DoesTableExist(const char* table_name) const {
228 Statement statement(GetUniqueStatement( 228 // GetUniqueStatement can't be const since statements may modify the
229 // database, but we know ours doesn't modify it, so the cast is safe.
230 Statement statement(const_cast<Connection*>(this)->GetUniqueStatement(
229 "SELECT name FROM sqlite_master " 231 "SELECT name FROM sqlite_master "
230 "WHERE type='table' AND name=?")); 232 "WHERE type='table' AND name=?"));
231 if (!statement) 233 if (!statement)
232 return false; 234 return false;
233 statement.BindString(0, table_name); 235 statement.BindString(0, table_name);
234 return statement.Step(); // Table exists if any row was returned. 236 return statement.Step(); // Table exists if any row was returned.
235 } 237 }
236 238
237 bool Connection::DoesColumnExist(const char* table_name, 239 bool Connection::DoesColumnExist(const char* table_name,
238 const char* column_name) { 240 const char* column_name) const {
239 std::string sql("PRAGMA TABLE_INFO("); 241 std::string sql("PRAGMA TABLE_INFO(");
240 sql.append(table_name); 242 sql.append(table_name);
241 sql.append(")"); 243 sql.append(")");
242 244
243 Statement statement(GetUniqueStatement(sql.c_str())); 245 // Our SQL is non-mutating, so this cast is OK.
246 Statement statement(const_cast<Connection*>(this)->GetUniqueStatement(
247 sql.c_str()));
244 if (!statement) 248 if (!statement)
245 return false; 249 return false;
246 250
247 while (statement.Step()) { 251 while (statement.Step()) {
248 if (!statement.ColumnString(1).compare(column_name)) 252 if (!statement.ColumnString(1).compare(column_name))
249 return true; 253 return true;
250 } 254 }
251 return false; 255 return false;
252 } 256 }
253 257
254 int64 Connection::GetLastInsertRowId() const { 258 int64 Connection::GetLastInsertRowId() const {
255 if (!db_) { 259 if (!db_) {
256 NOTREACHED(); 260 NOTREACHED();
257 return 0; 261 return 0;
258 } 262 }
259 return sqlite3_last_insert_rowid(db_); 263 return sqlite3_last_insert_rowid(db_);
260 } 264 }
261 265
266 int Connection::GetLastChangeCount() const {
267 if (!db_) {
268 NOTREACHED();
269 return 0;
270 }
271 return sqlite3_changes(db_);
272 }
273
262 int Connection::GetErrorCode() const { 274 int Connection::GetErrorCode() const {
263 if (!db_) 275 if (!db_)
264 return SQLITE_ERROR; 276 return SQLITE_ERROR;
265 return sqlite3_errcode(db_); 277 return sqlite3_errcode(db_);
266 } 278 }
267 279
268 const char* Connection::GetErrorMessage() const { 280 const char* Connection::GetErrorMessage() const {
269 if (!db_) 281 if (!db_)
270 return "sql::Connection has no connection."; 282 return "sql::Connection has no connection.";
271 return sqlite3_errmsg(db_); 283 return sqlite3_errmsg(db_);
(...skipping 23 matching lines...) Expand all
295 307
296 // The cache clear will get most statements. There may be still be references 308 // The cache clear will get most statements. There may be still be references
297 // to some statements that are held by others (including one-shot statements). 309 // to some statements that are held by others (including one-shot statements).
298 // This will deactivate them so they can't be used again. 310 // This will deactivate them so they can't be used again.
299 for (StatementRefSet::iterator i = open_statements_.begin(); 311 for (StatementRefSet::iterator i = open_statements_.begin();
300 i != open_statements_.end(); ++i) 312 i != open_statements_.end(); ++i)
301 (*i)->Close(); 313 (*i)->Close();
302 } 314 }
303 315
304 } // namespace sql 316 } // namespace sql
OLDNEW
« no previous file with comments | « app/sql/connection.h ('k') | app/sql/statement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698