`
re_reference
  • 浏览: 236706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sqlite运用总结

阅读更多
1、打开数据库。
//打开数据库
-(BOOL)openDatabase{
	NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
	NSString *paths = [[path objectAtIndex:0] stringByAppendingPathComponent:@"NineCellDiaryDB.sqlite3"];
	if(sqlite3_open([paths UTF8String], &database) != SQLITE_OK){
		[self closeDatabase];
		return NO;
	}return YES;
}

2、关闭数据库。
//关闭数据库
-(BOOL)closeDatabase{
	return (sqlite3_close(database) == SQLITE_OK)?YES:NO;
}

3、插入数据。
//打开数据库
	if(![self openDatabase]){
		[self closeDatabase];
		return NO;
	}
	
	sqlite3_stmt *insert_statement;
	//准备sql语句
	const char* sql = "insert into userinfo(uname,upassword,uexp,uportrait) values(?,?,?,?)";
	//绑定语句值
	if (sqlite3_prepare_v2(database,sql, -1, &insert_statement, NULL) != SQLITE_OK)return NO;
	sqlite3_bind_text(insert_statement, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
	sqlite3_bind_text(insert_statement, 2, [passwd UTF8String], -1, SQLITE_TRANSIENT);
	sqlite3_bind_int(insert_statement, 3, [e intValue]);
	
	//提供png格式和jpg格式支持
	int returnValue = -1;
	NSData *imageData = nil;
        UIImage *por = [UIImage imageNamed:@"kill.png"];
	imageData = UIImagePNGRepresentation(por);//png格式
	if (nil == por) {
		returnValue = sqlite3_bind_blob(insert_statement, 4, nil, -1, NULL);
	}else {
		returnValue = sqlite3_bind_blob(insert_statement, 4,[imageData bytes],[imageData length], NULL);
	}

	//执行插入
	if (sqlite3_step(insert_statement) != SQLITE_DONE) {
		sqlite3_finalize(insert_statement);
		[self closeDatabase];
		return NO;
	}
	sqlite3_finalize(insert_statement);
	[self closeDatabase];

4、更新数据。
//打开数据库
	if(![self openDatabase]){
		[self closeDatabase];
		return NO;
	}
	
	//准备陈述命令
	sqlite3_stmt *update_statement;
	//准备sql语句
	const char* sql = "update userinfo set uname=?,upassword=?,uexp=?,uportrait=? where id=1";
	//绑定语句值
	if (sqlite3_prepare_v2(database,sql, -1, &update_statement, NULL) != SQLITE_OK)return NO;
	sqlite3_bind_text(update_statement, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
	sqlite3_bind_text(update_statement, 2, [passwd UTF8String], -1, SQLITE_TRANSIENT);
	sqlite3_bind_int(update_statement, 3, [e intValue]);
	
	//提供png格式和jpg格式支持
	int returnValue = -1;
	NSData *imageData = nil;
	UIImage *por = [UIImage imageNamed:@"killer.png"];
	if (nil == por) {
		returnValue = sqlite3_bind_blob(update_statement, 4, nil, -1, NULL);  
        }else {
		imageData = UIImageJPEGRepresentation(por,1.0f);//jpg格式
		returnValue = sqlite3_bind_blob(update_statement, 4,[imageData bytes],[imageData length], NULL);
		}
	}

	//执行
	if (sqlite3_step(update_statement) != SQLITE_OK){
		sqlite3_finalize(update_statement);
		[self closeDatabase];
		return NO;
	}
	sqlite3_finalize(update_statement);
	[self closeDatabase];

5、查询数据
//打开数据库
		if (![self openDatabase]) {
			return self;
		}
		
		//查询所有数据
		sqlite3_stmt *statement;
		const char* zTail;
		sqlite3_prepare_v2(database,"SELECT * from userinfo;",-1,&statement,&zTail); 
		
        const unsigned char *name; 
		const unsigned char *password;
		int exp=0;
		NSString *newName = nil;
		NSString *newPassword = nil;
		NSData *imgData = nil;

		[color=green]//sqlite3_reset(statement);[/color]

		if (SQLITE_ROW == sqlite3_step(statement)) {
			name = sqlite3_column_text(statement,1);
			password = sqlite3_column_text(statement,2);
			exp = sqlite3_column_int(statement,3);
			if (NULL != sqlite3_column_blob(statement,4)) {
				imgData = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement,4) length:sqlite3_column_bytes(statement, 1)];
			}
			newName = [NSString stringWithCString:name encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8)];
			newPassword = [NSString stringWithCString:password encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8)];
		}
1
4
分享到:
评论

相关推荐

    android学习之SQLite总结(1)

    本文将对Android中的SQLite进行深入的总结,分为以下几个关键知识点: 1. **SQLite数据库介绍**: SQLite是一个开源的、基于SQL的嵌入式数据库,它不需要单独的服务器进程,而是作为应用程序的一部分运行。在...

    SQlite数据库笔记总结详解

    SQLite是一种轻量级的、开源的、自包含的数据库引擎,广泛应用于移动设备、嵌入式系统以及桌面应用程序。在本文中,我们将深入探讨SQLite...通过不断的练习和应用,你将能够灵活地运用SQLite来满足各种数据管理需求。

    sqliteodbc驱动sqlite3

    ### SQLiteODBC 驱动 SQLite3:深入解析与应用指南 #### 一、SQLiteODBC简介 SQLiteODBC是一种连接SQLite数据库与支持...通过本文介绍,希望能帮助大家更好地理解和运用SQLiteODBC,充分发挥其优势,提升工作效率。

    Android实验报告Sqlite数据库操作.pdf

    Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...

    sqlite3使用总结

    ### SQLite3 使用总结 #### 一、SQLite 操作入门与基本流程 SQLite 是一款轻量级的嵌入式数据库系统,适用于多种操作系统...掌握上述基础知识后,开发者可以根据实际需求灵活运用 SQLite 来解决各种数据存储问题。

    sqlite.lib+sqlite.h+sqlite.dll

    在IT领域,数据库是不可或缺的一部分,而SQLite是一个轻量级、自包含的、无服务器的SQL...通过不断的实践和学习,你可以更熟练地运用SQLite来处理各种数据库需求。希望这个总结能对你和其他有需要的同学有所帮助!

    SQLITE3 使用总结

    SQLite是一个开源、轻量级的嵌入式关系型数据库,广泛应用于移动设备、...理解并熟练运用其特性和功能,能够帮助我们构建高效、可靠的数据存储系统。无论是在小型应用还是大型项目中,SQLite都是一个值得信赖的选择。

    sqlite3 命令行下备份与恢复

    ### SQLite3命令行下的备份与恢复操作详解 #### 一、引言 在数据库管理领域,备份和恢复是一项至关重要的任务。...希望本文能帮助您更好地理解SQLite3命令行下的备份与恢复机制,并在实际应用中灵活运用这些技巧。

    Nodejs操作Sqlite3数据库封装

    总结起来,Node.js操作SQLite3数据库的核心在于理解和运用`node-sqlite3`库提供的API,而对这些API进行封装可以帮助我们简化代码,提高代码的可读性和可维护性。在实际项目中,根据业务场景选择合适的方法,可以有效...

    vc下sqlite使用

    SQLite是一款轻量级的、开源的关系型数据库管理系统,它无需...总结,SQLite在VC环境下使用主要涉及库的配置、API的调用以及错误和事务处理。理解并熟练运用这些知识点,可以轻松地在VC项目中实现数据存储和查询功能。

    sqlite3资料大全

    SQLite3是一款轻量级的数据库管理系统,它被广泛应用于嵌入式系统、移动应用以及需要在本地存储...从理论到实践,从基础操作到高级技巧,通过深入学习和实践,你将能够熟练地运用SQLite3解决各种数据存储和管理问题。

    SQLite入门与分析

    总结来说,SQLite的学习涵盖了虚拟机的运作机制、存储模型的详细解析以及数据库维护中的VACUUM命令。掌握这些基础知识,不仅可以帮助开发者更有效地利用SQLite,还能在设计和优化数据库性能时提供有力的支持。在实际...

    SQLite 数据库教程集合

    总结,这个SQLite数据库教程集合将带你全面了解SQLite的各个方面,无论你是初学者还是有经验的开发者,都能从中受益。通过深入学习和实践,你将能够熟练地运用SQLite构建高效、可靠的数据存储解决方案。

    Sqlite的jar和测试代码

    总结起来,这个压缩包提供了一套完整的解决方案,让你能够在Java环境中快速开始使用SQLite数据库,包括了驱动、测试代码以及独立的SQLite命令行工具,方便进行开发和测试工作。通过理解并运用这些组件,你可以轻松地...

    SQLiteAPI接口学习总结.docx

    SQLite API 接口是开发人员与 SQLite 数据库交互的核心组件,它们提供了...同时,灵活运用 VFS 可以适应各种复杂的环境和需求。记得在使用 SQLite API 时,遵循最佳实践并仔细检查错误返回值,以便及时发现和解决问题。

    数据存储之SQLite

    《数据存储之SQLite详解》 ...通过上述对SQLite的详细介绍,希望读者能够对其有更深入的认识,并能在实际项目中灵活运用。在学习过程中,可以参考提供的链接进一步探索,或者通过实际操作实践加深理解。

    sqlite的简单示例

    这篇“SQLite的简单示例”很可能是通过一个名为“SQL_Demo”的压缩包来展示如何在实际操作中运用SQLite。下面将详细介绍SQLite的一些核心概念、功能以及在实际开发中的应用。 SQLite的主要特点: 1. **轻量级**:...

    IOS应用源码——SQLite.rar

    本文将深入探讨SQLite在iOS应用中的运用,以及源码解析,帮助开发者更好地理解和利用这一强大的数据管理工具。 一、SQLite的基础概念 1. 数据库与表:SQLite提供了一个数据库容器,其中可以创建多个表来存储数据。...

    c# sqlite demo 帮助说明

    《C# SQLite实战指南——...总结,C#与SQLite的结合提供了高效且灵活的数据存储解决方案。通过理解并实践提供的项目Demo,开发者能更好地掌握SQLite在C#环境中的运用,从而在自己的项目中实现高效、可靠的数据库管理。

    数据库操作litepal和SQLite

    本文将深入探讨LitePal与SQLite的关系、工作原理以及如何在实际项目中运用它们。 SQLite是一个开源、嵌入式的关系型数据库,它无需单独的服务器进程,可以直接在应用程序中使用。SQLite支持SQL标准,可以创建、查询...

Global site tag (gtag.js) - Google Analytics