//database operation
打开数据库
-(BOOL) opendatabase{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL find = [fileManager fileExistsAtPath:path];
//找到数据库文件mydb.sql
if (find) {
NSLog(@"Database file have already existed.");
if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
return YES;
}
if(sqlite3_open([path UTF8String], &database_) == SQLITE_OK) {
//bFirstCreate_ = YES;
[self createChannelsTable:database_];//在后面实现函数createChannelsTable
return YES;
} else {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
return NO;
}
创建表
- (BOOL) createChannelsTable:(sqlite3*)db{
char *sql = "CREATE TABLE reports (id integer primary key,stime text,stitle text,scal text,sruntime text)";
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK) {
NSLog(@"Error: failed to prepare statement:create reports table");
return NO;
}
int success = sqlite3_step(statement);
sqlite3_finalize(statement);
if ( success != SQLITE_DONE) {
NSLog(@"Error: failed to dehydrate:CREATE TABLE reports");
return NO;
}
NSLog(@"Create table 'reports' successed.");
return YES;
}
插入表
- (BOOL)insertOneChannel:(NSString*)stime mytitle:(NSString*)stitle mycal:(NSString*)scal myruntime:(NSString*)sruntime
{
sqlite3_stmt *statement;
static char *sql = "INSERT INTO reports (id,stime,stitle,scal,sruntime) VALUES(NULL,?,?,?,?)";
//问号的个数要和(cid,title,imageData,imageLen)里面字段的个数匹配,代表未知的值,将在下面将值和字段关联。
int success = sqlite3_prepare_v2(database_, sql, -1, &statement, NULL);
if (success != SQLITE_OK) {
NSLog(@"Error: failed to insert:channels");
return NO;
}
//这里的数字1,2,3,4代表第几个问号
//sqlite3_bind_text(statement, 1, stime, -1, SQLITE_TRANSIENT);
char *p = [stime cStringUsingEncoding:1];
sqlite3_bind_text(statement, 1, [stime cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 2, [stitle cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 3, [scal cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statement, 4, [sruntime cStringUsingEncoding:1], -1, SQLITE_TRANSIENT);
success = sqlite3_step(statement);
sqlite3_finalize(statement);
if (success == SQLITE_ERROR) {
NSLog(@"Error: failed to insert into the database with message.");
return NO;
}
NSLog(@"Insert One Channel#############:id = _");
return YES;
}
查询表
- (void) getChannels:(NSMutableArray*)fChannels{
sqlite3_stmt *statement = nil;
char *sql = "SELECT * FROM reports";
if (sqlite3_prepare_v2(database_, sql, -1, &statement, NULL) != SQLITE_OK) {
NSLog(@"Error: failed to prepare statement with message:get channels.");
}
//查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值。
while (sqlite3_step(statement) == SQLITE_ROW) {
//char* cid = (char*)sqlite3_column_text(statement, 1);
char* stime = (char*)sqlite3_column_text(statement, 1);
char* stitle =(char*)sqlite3_column_text(statement, 2);
char* scal = (char*)sqlite3_column_text(statement, 3);
char* sruntime= (char*)sqlite3_column_text(statement, 4);
//NSString *tmp = [NSString stringWithCString:stitle encoding:1];
myreportitem* ri = [[myreportitem alloc] init];
ri.mytime = [NSString stringWithCString:stime encoding:1];
ri.mytitle = [NSString stringWithCString:stitle encoding:1];
ri.mycal = [NSString stringWithCString:scal encoding:1];
ri.myruntime = [NSString stringWithCString:sruntime encoding:1];
[fChannels addObject:ri];
[ri release];
}
sqlite3_finalize(statement);
}
删除记录
- (void)doClearReport: {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL find = [fileManager fileExistsAtPath:path];
//找到数据库文件mydb.sql
if (find) {
NSLog(@"Database file have already existed.");
if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
char *sql = "delete from reports";
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(database_, sql, -1, &statement, nil) != SQLITE_OK) {
NSLog(@"Error: failed to prepare statement:create reports table");
return NO;
}
int success = sqlite3_step(statement);
sqlite3_finalize(statement);
if ( success != SQLITE_DONE) {
NSLog(@"Error: failed to dehydrate:delete TABLE reports");
return NO;
}
NSLog(@"Create table 'reports' successed.");
sqlite3_close(database_);
}
}
分享到:
相关推荐
在提供的代码例子中,可以看到如何在iPhone应用中进行MySQL数据库(实际上应该是SQLite数据库,因为MySQL不直接支持iOS)的操作。以下是对代码中关键知识点的详细解释: 1. **打开数据库**: 在`opendatabase`方法...
本示例中的代码展示了如何在iPhone应用中使用SQLite数据库进行基本的操作,如打开、创建表和插入数据。SQLite是一个轻量级的关系型数据库,被广泛用于移动应用中,因为它不需要单独的服务器进程,可以直接在本地存储...
标题中的“iphone全国省市城市数据库源码(例子)”指的是为iPhone iOS应用开发提供的一个包含全国省市城市数据的源代码示例。这个源码库通常用于实现用户在应用中选择省份、城市的功能,例如地址输入或者地理位置...
本资源“ios应用源码之开发iphone的基础例子代码写的很好 2018127”提供了丰富的学习材料,帮助初学者理解和掌握iOS应用的基础开发过程。以下将对这个主题进行详细的探讨。 1. **Swift或Objective-C选择**:Swift是...
包含IOS例子源代码和api手册 用免费的数据库服务器,看看大家用得着不,可以省一笔服务器成本了,祝大家早日做出挣钱的游戏 一次失败的腾讯面试真是激励自己努力学习哈.... 顺便告诉大家一下cocos2d-x.org使用c++...
iOS是苹果公司为iPhone、iPad和iPod touch等设备开发的操作系统,以其稳定性和用户友好的界面而闻名。在iOS平台上进行应用开发,开发者可以利用强大的Swift编程语言和Xcode集成开发环境(IDE)。 首先,我们来看看...
开发者将学习到如何使用`FMDB`库(Objective-C的SQLite封装)进行数据库操作,如创建表、插入、查询和更新数据。 8. **SEImage.zip**:这个可能是关于图像处理的示例,涵盖了`UIImage`和`UIImageView`的使用,可能...
这个“IOS iphone UITableView简单例子”是一个基础的教程,旨在帮助开发者理解如何在iPhone应用中实现UITableView的基本功能。在这个项目中,我们将会看到如何创建两个不同的表视图区域,并且在用户点击某一行时弹...
在iOS开发中,SQLite是一个广泛使用的轻量级数据库系统,特别是在iPhone应用开发中。...`SQL_Demo`这个压缩包文件很可能包含了一个完整的SQLite数据库操作示例,你可以解压后学习其中的代码,加深理解。
在本资源"24小时学会iPhone编程全套示例代码"中,您将获得一套全面的教程,旨在帮助初学者在短时间内掌握iOS应用开发的基础。这个压缩包包含了一系列针对iPhone编程的实例代码,覆盖了从基本界面设计到高级功能实现...
每个例子都是一次学习的机会,通过阅读代码、运行应用、调试错误,你将逐渐熟悉iPhone开发的全貌。同时,别忘了查阅官方文档,这将是获取最准确、最新信息的最佳来源。在实践中不断探索和学习,相信你将在iPhone开发...
3. **数据存储**:一些例子可能会涉及到本地数据存储,比如使用UserDefaults、SQLite数据库或者Core Data框架。理解如何持久化数据是每个开发者需要掌握的基本技能。 4. **网络请求**:在移动应用中,与服务器进行...
这些压缩包文件包含的是苹果(Apple)官方提供的关于iPhone开发的一些示例项目,它们是学习iOS应用开发的宝贵资源。每个文件名代表了一个特定的应用或功能的实例,下面将逐一介绍这些示例项目的重点和涉及的知识点。...
在IT行业中,尤其是在移动应用开发领域,iPhone应用的开发是一个重要的组成部分。本示例将带你了解如何创建一...继续深入学习,如理解MVVM设计模式、网络请求、数据库操作、动画效果等,你将成为一名出色的iOS开发者。
总之,"iPhone开发基础教程附带的源代码"是一个宝贵的资源,它能让你亲手实践教程中的每一个例子,加深对iOS开发的理解。通过逐行阅读、修改和运行代码,你将能够快速提升自己的编程技能,最终独立完成自己的iPhone...
关于数据存储,可能有SQLite数据库或Core Data的例子,展示如何持久化应用程序的数据。Core Data是苹果提供的一种对象图形管理框架,它可以简化数据模型的创建和管理,以及与SQLite数据库的交互。 网络编程也是iOS...
这个例子将带你了解如何在iPhone应用中实现基本的网络请求,以便获取并处理来自远程服务器的数据。本教程主要涉及的技术点包括URLSession、JSON解析以及数据模型的构建。 首先,让我们关注`URLSession`。它是iOS ...
在本教程中,我们将深入探讨iPhone应用开发的基础知识,这些知识是基于人民邮电出版社出版的《iPhone开发基础教程》一书的源代码。这本书旨在为初学者提供一个全面的起点,让他们能够理解和掌握开发iOS应用程序所需...
接着,我们需要创建一个辅助类(Helper Class)来封装数据库的所有操作,这可以提高代码的可维护性和可读性。在这个例子中,我们创建了一个名为`DBAdapter`的类,该类继承自`SQLiteOpenHelper`,这将帮助我们处理...