// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SQL_STATEMENT_H_ #define SQL_STATEMENT_H_ #include <stdint.h> #include <string> #include <string_view> #include <vector> #include "base/component_export.h" #include "base/containers/span.h" #include "base/dcheck_is_on.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/thread_annotations.h" #include "base/time/time.h" #include "sql/database.h" namespace sql { enum class SqliteResultCode : int; // Possible return values from ColumnType in a statement. These should match // the values in sqlite3.h. enum class ColumnType { … }; // Compiles and executes SQL statements. // // This class is not thread-safe. An instance must be accessed from a single // sequence. This is enforced in DCHECK-enabled builds. // // Normal usage: // sql::Statement s(connection_.GetUniqueStatement(...)); // s.BindInt(0, a); // if (s.Step()) // return s.ColumnString(0); // // If there are errors getting the statement, the statement will be inert; no // mutating or database-access methods will work. If you need to check for // validity, use: // if (!s.is_valid()) // return false; // // Step() and Run() just return true to signal success. If you want to handle // specific errors such as database corruption, install an error handler in // in the connection object using set_error_delegate(). class COMPONENT_EXPORT(SQL) Statement { … }; } // namespace sql #endif // SQL_STATEMENT_H_