SQLite3基本操作方法

这篇博客介绍了SQLite3的基本操作,包括查询、增加、修改和删除数据。通过预处理语句和执行步骤,展示了如何在iOS应用中进行数据库交互,如查询记录并转化为对象,以及如何添加新的记录。示例代码详细解释了查询和添加操作的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQLite3基本操作方法

 (2010-12-18 13:53:23)

转载

 分类: 数据存储
 

 关键词:预处理语句,SQLite3常用操作方法,执行,执行结果,取出查询结果中的数据

课件来源:iBokan的iwind老师?

执行语句步骤:

 

•打开SQLite数据库文件,返回sqlite3 *指针

•预处理语句

•执行语句

•如果执行的是查询语句,则可以取出查询结果中的数据

 

关键代码:

1.预处理

 

   intsqlite3_prepare_v2(sqlite3 *db, const  char *zSql, intnBytes, sqlite3_stmt **ppStmt, const char **pzTail);

   //通常nBytes可以为-1, pzTail可以为NULL,这样就简化了该函数的使用

SQL常用方法总结:

1)查询

 

"SELECT * FROM log ORDER BY ID DESC" (ID按照降序排列)

 

2)增加

 

"INSERT INTO log (title,content,created_time) VALUES (?,?,?)"

 

3)修改

 

"UPDATE log SET title=?,content=? WHERE ID=?"

 

4)删除

 

"DELETE FROM log WHERE ID=?"

 

5)统计个数

 

"SELECT COUNT(*) FROM log"

详细使用可参考W3CSchool http://www.w3school.com.cn/sql/sql_syntax.asp

2.取出查询结果中的数据

   while(SQLITE_ROW==  sqlite3_step(stmt)) {

 

   intID=sqlite3_column_int(stmt,0);

   ...

   }

3.回收预处理语句对象

 intsqlite3_finalize(sqlite3_stmt*pStmt);

 

应用示例1:查询

sqlite3 *db = [DB setup];//打开数据库

sqlite3_stmt *stmt;//生成一个可执行的对象

//预处理语句(ID按照降序排列),-1可以看成是一个最大的正整数

intresult =sqlite3_prepare_v2(db,"SELECT * FROM log ORDER BY ID DESC", -1, &stmt,NULL);

if (result == SQLITE_OK) {

   NSMutableArray *logs = [[NSMutableArray alloc]init];//用于收取查询结果

   while(SQLITE_ROW==sqlite3_step(stmt)) {

       intID =sqlite3_column_int(stmt,0);//保存查询结果 获取log的编号

      const unsigned char*title =sqlite3_column_text(stmt,1);//获取log的字符串,’1‘是第2列

      const unsigned char*content =sqlite3_column_text(stmt,2);

       inttime =sqlite3_column_int(stmt,3);//存放的是从1997开始到现在的秒数 用NSData转换

       //用之前获取的数据创建一个新的log对象 字符串要改变编码格式后才能显示

               Log*log = [[Log alloc]initWithId:IDtitle:[NSString stringWithUTF8String:(const char*)title] 

       content:[NSString stringWithUTF8String:(const char*)content]createdAt:time];

       [logs  addObject:log];

       [log  release];

    }

  sqlite3_finalize(stmt);//(一定要写)回收预处理语句对象

   return[logsautorelease];

}

应用示例2:添加

 

+ (int) createWithTitle:(NSString*) title content:(NSString*) content {

    sqlite3*db = [DB setup];

    sqlite3_stmt*stmt;

    sqlite3_prepare_v2(db,"INSERT INTO log (title,content,created_time) VALUES (?,?,?)", -1, &stmt,NULL);

 

    //将上面的三个?绑定

   sqlite3_bind_text(stmt,1, [titleUTF8String], -1,NULL); 

   sqlite3_bind_text(stmt,2, [contentUTF8String], -1,NULL);

   sqlite3_bind_int(stmt,3,time(NULL));//放回当前的时间(s) 将当前时间绑定

   intresult =sqlite3_step(stmt);

   sqlite3_finalize(stmt);//数据在此时存储

    returnresult;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值