阅读量:0
``
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语句中的占位符相匹配。