SQL_Lite

来源:互联网 发布:重庆江北离家纺城源码 编辑:程序博客网 时间:2024/05/21 10:10

/*sql 是为受限设备或移动设备开发的,轻量级数据库.

 类似表格,有行有列,二维存储.一行是一条数据,一列是一个字段,对应成员变量;

 增删改查,要用特定的SQL语言,

 数据库中的每一列至少要有一列不能修改,否则无法找到此记录;列就是字段;(一本书的书名等详细内容)

*/

/*

简单基本的sql语句


(1) 数据记录筛选:

 

 查询数据的关键字:select  

 * 代表所有数据,可以替换成name等字段

 where 是查询条件,可以没有条件

 order 排序 用字段名(书的价格等)排序 [desc]降序   [dasc]升序


sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

 

 like  模糊查询  

 

 

sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

  

 top 10 查询前10条

 

sql="select top 10 * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

  

sql="select top 10 * from 数据表 order by 字段名 [desc]"

 

 in 关键字  查询满足值1,值2,值3的条件;

  

sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

 

 between 之间的范围

  

sql="select * from 数据表 where 字段名 between 值1 and 值2"

 

 

(2) 更新数据记录:

 

 update 关键字 

 set 关键字,更新内容  where条件(ios开发这书价格修改)

  

sql="update 数据表 set 字段名=字段值 where 条件表达式"

  

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

  

 

(3) 删除数据记录:

 

 delete关键字   where 删除条件(name=)

  

sql="delete from 数据表 where 条件表达式"

  

sql="delete from 数据表" (将数据表所有记录删除)

  

(4) 添加数据记录:

 

 insert 关键字   values关键字 和字段1对应值1 ,一一对应;

  

sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"

  

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

  

(5) 数据记录统计函数:

  

AVG(字段名) 得出一个表格栏平均值

  

COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计

  

MAX(字段名) 取得一个表格栏最大的值

  

MIN(字段名) 取得一个表格栏最小的值

  

SUM(字段名) 把数据栏的值相加

  

引用以上函数的方法:

  

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"

  

 别名用来获取sum结果

 

//set rs=conn.excute(sql)

  

用 rs("别名") 获取统计的值,其它函数运用同上。

  

查询去除重复值:select distinct * from table1

 

 distinct 排除重复的记录

  

(6) 数据表的建立和删除:

  CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

 

    此关键字可以用代码建表

 

*/


插入数据:

insert into book(name,author,imageurl,bookurl) values ("ios开发","某某某","xx","xx");


查询

select name from book;


修改:

update book set name='a'



代码建表:

CREATE TABLE book (

                   serial INTEGER  PRIMARY KEY AUTOINCREMENT,

                   name TEXT(1024)  NOTNULL,

                   author TEXT(1024) DEFAULTNULL,

                   imageurl TEXT(1024) DEFAULTNULL,

                   bookurl TEXT(1024) DEFAULTNULL)



两个数据库要有联系就要有一个相同的字段;一本书有多个作者,另外建立一个表存放作者,里面存书名;



单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点;


创建单例模式:首先检查类的唯一实例是否被创建,如果没有,就创建信的实例病将其返回.但是这回,它不是使用alloc这样的方法,而是调用[[super allocWithZone:NULL] init]来生成新的实例,为什么是super而不是self,这是因为已经在self中重载了基本的对象分配方法,所以需要借用父类(NSObject)的功能,来帮助处理底层内存的分配杂务.


  • (id) allocWithZone:(NSZone *)zone

{

return [[self sharedInstance] retain];

}


  • (id) copyWithZone:(NSZone *)zone

{

return self;


  • (Singleton *) sharedInstance

{

if (sharedSingleton_ == nil)

{

sharedInstance_ == [[super allocWithZone:NULL] init];

}

return sharedInstance_;

}




  • (id) retain

{

return self;

}


  • (NSUInteger) retainCount

{

return NSUIntegerMax;

}


  • (void) release

{

//什么也不做

}



  • (id) autorelease

{

return self;

}


其他retain,release,autorelease等方法被重载,以确保在引用计数内存模型中什么也不做,只是返回self.retainCount返回NSUIntegerMax,以保证实例在应用程序中的生存期一直存在.




子类化 Singleton:

  • (Singleton *) sharedInstance

{

if (sharedInstance _ == nil)

{

sharedInstance_ == [NSAllocateObject([self class],0,NULL) init];

}

return sharedInstance_;

}

第一个参数是Singleton类的类型,第二个参数是用于索引的实例变量的额外字节,它总是0,第三个参数是用于指定内存中分配的区域,一般为NULL,表示默认区域.


常用的单例类:

UIApplication--每一个应用程序有且仅有一个UIApplication的实例,它由 UIApplicationMain函数在应用程序启动时创建为单例对象,之后对同一 UIApplication实例可以通过其sharedApplication类方法进行访问.


UIAccelerometer--UIAccelerometer类让应用程序可以进行注册,以接收来自IOS设备内置的加速计的加速度相关数据.应该调用其shared UIAccelerometer单例类方法以访问它的唯一实例,然后设定它的updateInterval属性,并用自己的delegate对象设定delegate属性,以接收来自单例实例的数据.
















第三方数据库:

fmdb



0 0