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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值