创建表-sqlite 基础教程(5)

本文详细介绍了如何使用SQLite数据库API中的sqlite3_exec函数执行SQL语句,并通过实例展示了如何创建表,进行基本的数据库操作。理解这些基础操作对于数据库管理和应用开发至关重要。

声明
欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。
文章出处:http://blog.youkuaiyun.com/iukey




前面的教程我们学习了两个函数 sqlite3_open 和  sqlite3_close 。这一节我们将学习另一个很重要的函数 sqlite3_exec ,这个函数的功能就是执行 SQL 语句。我们来看一下它的声明:

SQLITE_API int sqlite3_exec(
  sqlite3*,                                  /* An open database 一个已经打开的数据库,也就是我们之前的 pdb*/
  const char *sql,                           /* SQL to be evaluated  待执行的语句 */
  int (*callback)(void*,int,char**,char**),  /* Callback function 回调函数,有固定的格式,你可以自己实现*/
  void *,                                    /* 1st argument to callback 回调函数的第一个参数*/
  char **errmsg                              /* Error msg written here 可以带回错误信息*/
);
第三个和第四个参数我们暂时用不到,可以填充为 NULL。看一个我的实例就明白了。
void createTable{
    char* err;
    char* sql = "create table dictionary(ID integer primary key autoincrement,name nvarchar(64),no integer,comment nvarchar(256))";//待执行的语句
    
    if (SQLITE_OK != sqlite3_open(getFilePath(), &pdb)){//打开数据库
        printf("createDB failed in createTable\n");
        return ;
    }
    
    if (SQLITE_OK == sqlite3_exec(pdb, sql, NULL, NULL, &err)) {// 执行 SQL 语句
        printf("createTable succeed!\n");
        sqlite3_close(pdb);//关闭数据库
        sqlite3_free(err);
        return ;
    }else{
        printf("err:%s",err);//如果失败打印错误码
        sqlite3_free(err);
        return ;
    }
}
明白了吧,就这么简单,这样就创建了一张表。然后我们就可以进行插入记录,删除记录,查询记录,修改记录。当然这些都是后面要讲的,本文看完,你知道怎么去创建一张表就OK了。


以下是一个基础的 Node.js 中使用 `better-sqlite3` 的教程。 ### 安装 首先,要在项目里安装 `better-sqlite3` 模块。打开终端,在项目根目录下运行如下命令: ```bash npm install better-sqlite3 ``` ### 连接到数据库 在 Node.js 代码里引入 `better-sqlite3` 模块,并且连接到 SQLite 数据库。要是数据库文件不存在,`better-sqlite3` 会自动创建它。 ```javascript const Database = require('better-sqlite3'); // 连接到数据库,如果文件不存在则会创建 const db = new Database('example.db'); ``` ### 创建 可以使用 `prepare` 方法来准备 SQL 语句,然后使用 `run` 方法执行该语句,以此创建。 ```javascript // 创建一个名为 users 的 const createTable = db.prepare(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER ) `); createTable.run(); ``` ### 插入数据 使用 `prepare` 方法准备插入语句,再使用 `run` 方法执行插入操作。 ```javascript // 插入一条数据 const insertUser = db.prepare('INSERT INTO users (name, age) VALUES (?, ?)'); const info = insertUser.run('John Doe', 30); console.log('Inserted user with ID:', info.lastInsertRowid); ``` ### 查询数据 使用 `prepare` 方法准备查询语句,使用 `get` 方法获取单条记录,使用 `all` 方法获取所有记录。 ```javascript // 查询单条记录 const getUser = db.prepare('SELECT * FROM users WHERE id = ?'); const user = getUser.get(1); console.log('User with ID 1:', user); // 查询所有记录 const getAllUsers = db.prepare('SELECT * FROM users'); const allUsers = getAllUsers.all(); console.log('All users:', allUsers); ``` ### 更新数据 使用 `prepare` 方法准备更新语句,使用 `run` 方法执行更新操作。 ```javascript // 更新数据 const updateUser = db.prepare('UPDATE users SET age = ? WHERE id = ?'); const updateInfo = updateUser.run(31, 1); console.log('Updated rows:', updateInfo.changes); ``` ### 删除数据 使用 `prepare` 方法准备删除语句,使用 `run` 方法执行删除操作。 ```javascript // 删除数据 const deleteUser = db.prepare('DELETE FROM users WHERE id = ?'); const deleteInfo = deleteUser.run(1); console.log('Deleted rows:', deleteInfo.changes); ``` ### 关闭数据库连接 在完成数据库操作之后,要关闭数据库连接。 ```javascript // 关闭数据库连接 db.close(); ``` ### 完整示例代码 ```javascript const Database = require('better-sqlite3'); // 连接到数据库 const db = new Database('example.db'); // 创建 const createTable = db.prepare(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER ) `); createTable.run(); // 插入数据 const insertUser = db.prepare('INSERT INTO users (name, age) VALUES (?, ?)'); const info = insertUser.run('John Doe', 30); console.log('Inserted user with ID:', info.lastInsertRowid); // 查询单条记录 const getUser = db.prepare('SELECT * FROM users WHERE id = ?'); const user = getUser.get(1); console.log('User with ID 1:', user); // 查询所有记录 const getAllUsers = db.prepare('SELECT * FROM users'); const allUsers = getAllUsers.all(); console.log('All users:', allUsers); // 更新数据 const updateUser = db.prepare('UPDATE users SET age = ? WHERE id = ?'); const updateInfo = updateUser.run(31, 1); console.log('Updated rows:', updateInfo.changes); // 删除数据 const deleteUser = db.prepare('DELETE FROM users WHERE id = ?'); const deleteInfo = deleteUser.run(1); console.log('Deleted rows:', deleteInfo.changes); // 关闭数据库连接 db.close(); ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值