Sqlit3 简单操作
来源:互联网 发布:2017年十大网络用语 编辑:程序博客网 时间:2024/06/05 11:01
1。创建数据库并且打开
- (void)open_db
{
@synchronized(self){
NSArray *pathArray =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString *path = [[pathArrayobjectAtIndex:0]stringByAppendingPathComponent:@"Amt.db"];
if (sqlite3_open([pathUTF8String], &database) !=SQLITE_OK) {
sqlite3_close(database);
NSLog(@"创建数据库失败");
}
}
}
2。关闭数据库
sqlite3_close(database);
3。创建表
- (void)create_table:(NSString*)tableName
{
tableDBName = tableName;
[[NSUserDefaults standardUserDefaults] setObject:tableNameforKey:TABLENAME];
char *errMsg;
NSString *createTableSql = [NSStringstringWithFormat:
@"create table if not exists 'Amt_%@'(\
row integer primay key ,\
msgid,\
msgtitle,\
msgcontent,\
channelid,\
channelname,\
channeltype)",tableDBName];
if (sqlite3_exec(database, [createTableSqlUTF8String],NULL, NULL, &errMsg)!= SQLITE_OK) {
NSLog(@"创建表失败");
sqlite3_free(errMsg);
[self close];
}
}
4。添加表数据- (void)addMesg:(MsgInfo*)msgInfo
{
char *errMsg;
tableDBName = [[NSUserDefaultsstandardUserDefaults]objectForKey:TABLENAME];
NSString *addSql = [NSStringstringWithFormat:@"insert or replace into 'Amt_%@'(msgid,msgtitle,msgcontent,channelid,channelname,channeltype) values('%@','%@','%@','%@','%@','%@'); ",tableDBName,msgInfo.msgid,msgInfo.msgtitle,msgInfo.msgcontent,msgInfo.channelid,msgInfo.channelname,msgInfo.channeltype];
if (sqlite3_exec(database, [addSqlUTF8String],NULL, NULL, &errMsg)!= SQLITE_OK) {
NSLog(@"插入数据失败");
sqlite3_free(errMsg);
[self close];
}
}
5。筛选数据- (NSMutableArray *)getChannelIDInfo :(NSString *)channleIDInfo
{
NSMutableArray *msgArray = [[NSMutableArrayalloc]init];
MsgInfo *msgInfo = [[MsgInfoalloc]init];
tableDBName = [[NSUserDefaultsstandardUserDefaults]objectForKey:TABLENAME];
sqlite3_stmt *statement;
NSString *selSql = [NSStringstringWithFormat:@"select * from 'Amt_%@' where channelid = '%@'",tableDBName,channleIDInfo];
if (sqlite3_prepare_v2(database, [selSqlUTF8String], -1, &statement,nil) == SQLITE_OK) {
while (sqlite3_step(statement) ==SQLITE_ROW) {
//通过循环检索所有结果
char * msgid = (char*)sqlite3_column_text(statement,1);
char * msgtitle = (char*)sqlite3_column_text(statement,2);
char * msgcontent = (char *)sqlite3_column_text(statement,3);
char * channelid = (char *)sqlite3_column_text(statement,4);
char * channelname = (char *)sqlite3_column_text(statement,5);
char * channeltype = (char *)sqlite3_column_text(statement,6);
NSString *msgidStr = [NSStringstringWithCString:msgidencoding:NSUTF8StringEncoding];
NSString *msgtitleStr = [NSStringstringWithCString:msgtitleencoding:NSUTF8StringEncoding];
NSString *msgcontentStr = [NSStringstringWithCString:msgcontentencoding:NSUTF8StringEncoding];
NSString *channelidStr = [NSStringstringWithCString:channelidencoding:NSUTF8StringEncoding];
NSString *channelnameStr = [NSStringstringWithCString:channelnameencoding:NSUTF8StringEncoding];
NSString *channeltypeStr = [NSStringstringWithCString:channeltypeencoding:NSUTF8StringEncoding];
msgInfo.msgid = msgidStr;
msgInfo.msgtitle = msgtitleStr;
msgInfo.msgcontent = msgcontentStr;
msgInfo.channelid = channelidStr;
msgInfo.channelname = channelnameStr;
msgInfo.channeltype = channeltypeStr;
[msgArray addObject:msgInfo];
}
}
sqlite3_finalize(statement);
return [msgArray autorelease];
}
6. 删除数据
- (void)delOneMsg:(NSString *)channleIDInfo
{
char *errMsg;
tableDBName = [[NSUserDefaultsstandardUserDefaults] objectForKey:TABLENAME];
NSString *delSql = [NSStringstringWithFormat:@"delete from 'Amt_%@' where channelid = '%@'",tableDBName,channleIDInfo];
if (sqlite3_exec(database, [delSqlUTF8String],NULL , NULL, &errMsg)!= SQLITE_OK) {
NSLog(@"删除失败");
sqlite3_free(errMsg);
}
}
- Sqlit3 简单操作
- sqlit3入门
- SQLit3 使用
- sqlit3使用总结[zz]
- sqlit3 学习笔记
- sqlit3的使用
- sqlit3使用知识
- IOS开发之sqlit3应用
- IOS sqlit3的基本使用
- iOS sqlit3 数据库使用详情
- sqlit3相关知识点(2)
- sqlit3相关知识点(2)
- 命令行下查看android sqlit3数据库信息
- 谈谈sqlit3编码和插入中文乱码问题
- Rman操作简单分析
- 简单的单链表操作
- 操作简单XML文件
- 简单的文件操作
- 初学Android,使用Service的音乐播放器(七十二)
- wordpress主循环显示文章方法
- JavaScript monitor hidden input value change
- using System;
- 52.IO流-对象的序列化
- Sqlit3 简单操作
- Eclipse/RAD平台中一些名词术语缩写的介绍
- 一个判断字符串是否是数字的正则表达式
- 梦断代码--一个程序员的自白 笔记
- C++的虚函数理解
- 根据功能名称, 追溯所属菜单和职责
- emule中节点加入Kad网络过程(源代码详解)【对原文部分改进】
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
- 应用程序安装在sd卡还是内存选择及设置