``
python,import sqlite3,,class SQLiteHelper:, def __init__(self, db_name):, self.conn = sqlite3.connect(db_name), self.cursor = self.conn.cursor(),, def close(self):, self.conn.close(),, def execute(self, sql):, self.cursor.execute(sql), self.conn.commit(),, def fetchall(self, sql):, self.cursor.execute(sql), return self.cursor.fetchall(),``SQLite 操作类代码
SQLite 是一个轻量级的关系型数据库管理系统,广泛应用于嵌入式系统、移动应用和桌面应用中,为了简化对 SQLite 数据库的操作,通常会封装一些常用的操作类,这些类提供了面向对象的方式来访问和管理 SQLite 数据库,使开发人员可以轻松地添加、修改、删除和查询数据。

常见操作类示例
以下是几个常见的 SQLite 操作类示例,包括 Python、C++ 和 PHP 的实现:
Python 示例(EasySqlite)
import sqlite3
class EasySqlite:
"""
sqlite 数据库操作工具类
database: 数据库文件地址,db/mydb.db
"""
_connection = None
def __init__(self, database):
# 连接数据库
self._connection = sqlite3.connect(database)
def _dict_factory(self, cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
def execute(self, sql, args=[], result_dict=True, commit=True):
"""
执行数据库操作的通用方法
Args:
sql: sql语句
args: sql参数
result_dict: 操作结果是否用dict格式返回
commit: 是否提交事务
Returns:
list 列表,
[{'id': 1, 'name': '张三'}, {'id': 2, 'name': '李四'}]
"""
if result_dict:
self._connection.row_factory = self._dict_factory
else:
self._connection.row_factory = None
# 获取游标
_cursor = self._connection.cursor()
# 执行SQL获取结果
_cursor.execute(sql, args)
if commit:
self._connection.commit()
data = _cursor.fetchall()
_cursor.close()
return data
C++ 示例(SQLiteCpp)
#include <sqlite3.h>
#include <string>
class SQLiteDB {
public:
SQLiteDB(const std::string& dbName);
~SQLiteDB();
bool open();
void close();
bool execute(const std::string& sql);
// Other methods...
private:
sqlite3* db;
};
SQLiteDB::SQLiteDB(const std::string& dbName) : db(nullptr) {
if (sqlite3_open((dbName + ".db").c_str(), &db)) {
// handle error
}
}
SQLiteDB::~SQLiteDB() {
close();
}
void SQLiteDB::close() {
if (db) {
sqlite3_close(db);
db = nullptr;
}
}
bool SQLiteDB::open() {
if (db == nullptr && sqlite3_open(":memory:", &db)) {
// handle error
return false;
}
return true;
}
bool SQLiteDB::execute(const std::string& sql) {
char* errMsg;
if (sqlite3_exec(db, sql.c_str(), nullptr, nullptr, &errMsg) != SQLITE_OK) {
// handle error
return false;
}
return true;
}
PHP 示例(PDOsqlite)
class PDOsqlite {
public $dbcharset = 'utf8';
private $dbFile = '';
public $dbh = null;
protected static $instanceArr = array();
public function __construct($dbname) {
$this>dbFile = "存放数据库文件的目录" . $dbname;
try {
$this>dbh = new PDO('sqlite:' . $this>dbFile);
} catch (PDOException $e) {
try {
$this>dbh = new PDO('sqlite2:' . $this>dbFile);
} catch (PDOException $e) {
$this>outputError($e>getMessage());
}
}
}
/**
* 单例模式
* @param $dbname
* @return Object
*/
public static function getInstance($dbname) {
if (!key_exists($dbname, self::$instanceArr)) {
self::$instanceArr[$dbname] = new self($dbname);
}
return self::$instanceArr[$dbname];
}
/**
* @param $tab_name 数据表名
* @param $dataArr 需要插入的字段数组
* @return int|void
*/
public function insert($tab_name, $dataArr) {
if (is_array($dataArr) && count($dataArr) > 0) {
$key_list = '';
$value_list = '';
foreach ($dataArr as $key => $val) {
$key_list .= "'" . $key . "',";
$value_list .= "'" . $val . "',";
}
$key_list = '(' . rtrim($key_list, ',') . ')';
$value_list = '(' . rtrim($value_list, ',') . ')';
$sql = "insert into $tab_name $key_list values $value_list";
$result = $this>dbh>exec($sql);
$this>getPDOError();
return $result;
}
return;
}
}
相关问答FAQs
Q1: SQLite 操作类的主要作用是什么?
A1: SQLite 操作类的主要作用是提供一种面向对象的方式来访问和管理 SQLite 数据库,通过封装常用的数据库操作方法,如增、删、改、查等,可以简化开发过程,提高代码的可维护性和可重用性。
Q2: 使用 SQLite 操作类时需要注意哪些事项?
A2: 使用 SQLite 操作类时需要注意以下几点:确保数据库连接正确;在执行 SQL 语句时处理可能出现的异常;根据需要选择适当的事务管理方式;及时关闭数据库连接以释放资源。
import sqlite3
class SQLiteOperation:
def __init__(self, db_name):
self.conn = sqlite3.connect(db_name)
self.cursor = self.conn.cursor()
def create_table(self, create_table_sql):
try:
self.cursor.execute(create_table_sql)
self.conn.commit()
print("Table created successfully")
except Exception as e:
print(f"Failed to create table: {e}")
def insert_data(self, insert_data_sql, data):
try:
self.cursor.execute(insert_data_sql, data)
self.conn.commit()
print("Data inserted successfully")
except Exception as e:
print(f"Failed to insert data: {e}")
def query_data(self, query_data_sql):
try:
self.cursor.execute(query_data_sql)
results = self.cursor.fetchall()
return results
except Exception as e:
print(f"Failed to query data: {e}")
return []
def update_data(self, update_data_sql, data):
try:
self.cursor.execute(update_data_sql, data)
self.conn.commit()
print("Data updated successfully")
except Exception as e:
print(f"Failed to update data: {e}")
def delete_data(self, delete_data_sql, data):
try:
self.cursor.execute(delete_data_sql, data)
self.conn.commit()
print("Data deleted successfully")
except Exception as e:
print(f"Failed to delete data: {e}")
def close_connection(self):
self.conn.close()
print("Database connection closed")
使用示例
db_name = "example.db"
db = SQLiteOperation(db_name)
创建表
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
);
"""
db.create_table(create_table_sql)
插入数据
insert_data_sql = "INSERT INTO users (name, age) VALUES (?, ?);"
data = ('Alice', 30)
db.insert_data(insert_data_sql, data)
查询数据
query_data_sql = "SELECT * FROM users;"
results = db.query_data(query_data_sql)
print(results)
更新数据
update_data_sql = "UPDATE users SET age = ? WHERE name = ?;"
data = (35, 'Alice')
db.update_data(update_data_sql, data)
删除数据
delete_data_sql = "DELETE FROM users WHERE name = ?;"
data = ('Alice', )
db.delete_data(delete_data_sql, data)
关闭数据库连接
db.close_connection()
这个类提供了基本的数据库操作,你可以根据需要对其进行扩展,例如添加错误处理、日志记录等,在创建表和插入数据时,确保SQL语句是正确的,并且传递给函数的数据与SQL语句中的占位符相匹配。