c语言sqlite3删除最后一行,sqlite学习笔记11:C语言中使用sqlite之删除记录(示例代码)...

最后一节,这里记录下怎样删除数据。

前面全部的代码都继承在这里了,在Ubuntu14.04和Mac10.9上亲測通过。

#include

#include

#include "sqlite/sqlite3.h"

#define DB_NANE "sqlite/test.db"

sqlite3 *db = NULL;

char* sql = NULL;

char *zErrMsg = NULL;

const char* data = "Callback function called";

int ret = 0;

typedef enum{

false,

true

} bool;

/*

typedef int (*sqlite3_callback)(

void*, Data provided in the 4th argument of sqlite3_exec()

int, The number of columns in row

char**, An array of strings representing fields in the row

char** An array of strings representing column names

);

*/

static int callback(void *NotUsed, int argc, char **argv, char **azColName)

{

int i = 0;

for(i=0; i < argc; i++){

printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

}

printf("\n");

return 0;

}

bool connectDB()

{

ret = sqlite3_open(DB_NANE, &db);

if( ret != SQLITE_OK){

fprintf(stderr, "Error open database: %s\n", sqlite3_errmsg(db));

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "Successfully opened database\n");

return true;

}

bool createTable()

{

/* Create SQL statement */

sql = "CREATE TABLE COMPANY(" "ID INT PRIMARY KEY NOT NULL," "NAME TEXT NOT NULL," "AGE INT NOT NULL," "ADDRESS CHAR(50)," "SALARY REAL );";

/* Execute SQL statement */

ret = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

if( ret != SQLITE_OK ){

fprintf(stderr, "Error SQL: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "Successfully table created\n");

return true;

}

bool insertRecords()

{

/* Create SQL statement */

sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " "VALUES (1, ‘Paul‘, 32, ‘California‘, 20000.00 ); " "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " "VALUES (2, ‘Allen‘, 25, ‘Texas‘, 15000.00 ); " "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" "VALUES (3, ‘Teddy‘, 23, ‘Norway‘, 20000.00 );" "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" "VALUES (4, ‘Mark‘, 25, ‘Rich-Mond ‘, 65000.00 );";

/* Execute SQL statement */

ret = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

if( ret != SQLITE_OK ){

fprintf(stderr, "SQL error: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "successfully records created\n");

return true;

}

bool selectFromTable()

{

/* Create SQL statement */

sql = "SELECT * from COMPANY";

/* Execute SQL statement */

ret = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);

if( ret != SQLITE_OK ){

fprintf(stderr, "Error SQL: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "successfully operation done\n");

return true;

}

bool updateTable()

{

/* Create merged SQL statement */

sql = "UPDATE COMPANY set SALARY = 25000.00 where ID=1; " "SELECT * from COMPANY";

/* Execute SQL statement */

ret = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);

if( ret != SQLITE_OK ){

fprintf(stderr, "SQL error: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "Successfully operation done \n");

return true;

}

bool deleteTable()/*新加*/

{

/* Create merged SQL statement */

sql = "DELETE from COMPANY where ID=2; " "SELECT * from COMPANY";

/* Execute SQL statement */

ret = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);

if( ret != SQLITE_OK ){

fprintf(stderr, "Error SQL: %s\n", zErrMsg);

sqlite3_free(zErrMsg);

return false;

}

fprintf(stdout, "Successfully operation done\n");

return true;

}

bool closeDB()

{

int ret = 0;

ret = sqlite3_close(db);

if ( ret == SQLITE_BUSY ){

return false;

}

return true;

}

int main(int argc, char* argv[])

{

connectDB();

/*createTable();*/

/*insertRecords();*/

selectFromTable();

/*updateTable();*/

deleteTable();

selectFromTable();

closeDB();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 平台上使用 C 语言 SQLite3 动态库,可以按照以下步骤进行: 1. 下载 SQLite3 的动态库文件,可以从官方网站(https://www.sqlite.org/download.html)下载。根据自己的编译器和系统版本选择相应的动态库文件。 2. 在需要使用 SQLite3 动态库的应用程序,添加头文件和链接库。在应用程序,需要包含 SQLite3 的头文件,以便使用 SQLite3 提供的函数。同时,还需要将 SQLite3 动态库链接到应用程序。 3. 在应用程序使用 SQLite3 提供的函数。在应用程序,可以像使用普通函数一样调用 SQLite3 提供的函数。 以下是一个简单的示例: 假设有一个动态库文件 sqlite3.dll,其包含 SQLite3 的函数。在应用程序,可以按照以下步骤使用该动态库: 1. 在应用程序添加头文件: ``` #include <stdio.h> #include <stdlib.h> #include <sqlite3.h> ``` 2. 在应用程序链接动态库: ``` #pragma comment(lib, "sqlite3.lib") ``` 需要将 sqlite3.lib 文件放在应用程序的可执行文件同一目录下,并在代码添加上述链接命令。 3. 在应用程序使用 SQLite3 提供的函数: ``` int main() { sqlite3 *db; // SQLite3 数据库对象 char *errmsg = NULL; // 错误信息 // 打开数据库 int rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Failed to open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return -1; } // 执行 SQL 查询语句 const char *sql = "CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; rc = sqlite3_exec(db, sql, NULL, NULL, &errmsg); if (rc != SQLITE_OK) { fprintf(stderr, "Failed to create table: %s\n", errmsg); sqlite3_free(errmsg); sqlite3_close(db); return -1; } // 关闭数据库 sqlite3_close(db); return 0; } ``` 需要注意的是,SQLite3 动态库文件必须位于应用程序可搜索的路径,或者通过指定路径的方式加载动态库。如果 SQLite3 动态库文件和应用程序在同一目录下,则可以直接使用文件名加载动态库。如果不在同一目录下,则需要指定 SQLite3 动态库文件的完整路径。同时,SQLite3 动态库文件需要和应用程序使用的编译器版本和系统版本相匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值