1fc0b0055Sopenharmony_ci/* 2fc0b0055Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3fc0b0055Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fc0b0055Sopenharmony_ci * you may not use this file except in compliance with the License. 5fc0b0055Sopenharmony_ci * You may obtain a copy of the License at 6fc0b0055Sopenharmony_ci * 7fc0b0055Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fc0b0055Sopenharmony_ci * 9fc0b0055Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fc0b0055Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fc0b0055Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fc0b0055Sopenharmony_ci * See the License for the specific language governing permissions and 13fc0b0055Sopenharmony_ci * limitations under the License. 14fc0b0055Sopenharmony_ci */ 15fc0b0055Sopenharmony_ci 16fc0b0055Sopenharmony_ci#ifndef STATEMENT_H 17fc0b0055Sopenharmony_ci#define STATEMENT_H 18fc0b0055Sopenharmony_ci 19fc0b0055Sopenharmony_ci#include <string> 20fc0b0055Sopenharmony_ci 21fc0b0055Sopenharmony_ci#include "variant_value.h" 22fc0b0055Sopenharmony_ci 23fc0b0055Sopenharmony_ci#include "sqlite3sym.h" 24fc0b0055Sopenharmony_ci 25fc0b0055Sopenharmony_cinamespace OHOS { 26fc0b0055Sopenharmony_cinamespace Security { 27fc0b0055Sopenharmony_cinamespace AccessToken { 28fc0b0055Sopenharmony_ciclass Statement final { 29fc0b0055Sopenharmony_cipublic: 30fc0b0055Sopenharmony_ci enum State { BUSY, ROW, DONE, MISUSE, UNKNOWN }; 31fc0b0055Sopenharmony_ci 32fc0b0055Sopenharmony_ci Statement(sqlite3* db, const std::string& sql); 33fc0b0055Sopenharmony_ci virtual ~Statement(); 34fc0b0055Sopenharmony_ci 35fc0b0055Sopenharmony_ci void Bind(const int32_t index, const std::string& text); 36fc0b0055Sopenharmony_ci void Bind(const int32_t index, int32_t value); 37fc0b0055Sopenharmony_ci void Bind(const int32_t index, int64_t value); 38fc0b0055Sopenharmony_ci void Bind(const std::string& tableColumnName, const VariantValue& value); 39fc0b0055Sopenharmony_ci 40fc0b0055Sopenharmony_ci State Step(); 41fc0b0055Sopenharmony_ci int32_t Reset(); 42fc0b0055Sopenharmony_ci 43fc0b0055Sopenharmony_ci std::string GetColumnString(const int32_t column) const; 44fc0b0055Sopenharmony_ci int32_t GetColumnInt(const int32_t column) const; 45fc0b0055Sopenharmony_ci int64_t GetColumnInt64(const int32_t column) const; 46fc0b0055Sopenharmony_ci std::string GetColumnName(const int32_t column) const; 47fc0b0055Sopenharmony_ci int32_t GetParameterIndex(const std::string& name) const; 48fc0b0055Sopenharmony_ci int32_t GetColumnCount() const; 49fc0b0055Sopenharmony_ci VariantValue GetValue(const int32_t column, const bool flagInt64) const; 50fc0b0055Sopenharmony_ci 51fc0b0055Sopenharmony_ciprivate: 52fc0b0055Sopenharmony_ci sqlite3* db_; 53fc0b0055Sopenharmony_ci sqlite3_stmt* statement_; 54fc0b0055Sopenharmony_ci const std::string sql_; 55fc0b0055Sopenharmony_ci}; 56fc0b0055Sopenharmony_ci} // namespace AccessToken 57fc0b0055Sopenharmony_ci} // namespace Security 58fc0b0055Sopenharmony_ci} // namespace OHOS 59fc0b0055Sopenharmony_ci#endif // STATEMENT_H 60