上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页
摘要: 一、创建索引: 在SQLite中,创建索引的SQL语法和其他大多数关系型数据库基本相同,因为这里也仅仅是给出示例用法: sqlite> CREATE TABLE testtable (first_col integer,second_col integer); --创建最简单的索引,该索引基于某个表的一个字段。 sqlite> CREATE INDEX testtable_idx ON testtable(first_col); --创建联合索引,该索引基于某个表的多个字段,同时可以指定每个字段的排序规则(升序/降序)。 sqlite> CREATE INDEX testta 阅读全文
posted @ 2012-02-17 00:09 OrangeAdmin 阅读(30880) 评论(1) 推荐(4)
摘要: 一、聚合函数: SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里将只是给出每个聚集函数的简要说明,而不在给出更多的示例了。这里还需要进一步说明的是,对于所有聚合函数而言,distinct关键字可以作为函数参数字段的前置属性,以便在进行计算时忽略到所有重复的字段值,如count(distinct x)。函数说明avg(x)该函数返回在同一组内参数字段的平均值。对于不能转换为数字值的String和BLOB类型的字段值,如'HELLO',SQLite会将其视为0。avg函数的结果总是浮点型,唯一的例外是所有的字段值均为NULL,那样该函数的结果也为NUL 阅读全文
posted @ 2012-02-15 07:46 OrangeAdmin 阅读(63879) 评论(14) 推荐(11)
摘要: 一、创建数据表: 该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则。但是对于一些SQLite特有的规则,我们会给予额外的说明。注:以下所有示例均是在sqlite自带命令行工具中完成的。 1). 最简单的数据表: sqlite> CREATE TABLE testtable (first_col integer); 这里需要说明的是,对于自定义数据表表名,如testtable,不能以sqlite_开头,因为以该前缀定义的表名都用于sqlite内部。 2). 创建带有缺省值的数据表: sqlite> CREATE TA 阅读全文
posted @ 2012-02-13 07:29 OrangeAdmin 阅读(35774) 评论(8) 推荐(6)
摘要: 一、概述: 在SQLite提供的C/C++接口中,其中5个APIs属于核心接口。在这篇博客中我们将主要介绍它们的用法,以及它们所涉及到的核心SQLite对象,如database_connection和prepared_statement。相比于其它数据库引擎提供的APIs,如OCI、MySQL API等,SQLite提供的接口还是非常易于理解和掌握的。 二、核心对象和接口: 1. 核心对象: 在SQLite中最主要的两个对象是,database_connection和prepared_statement。database_connection对象是由sqlite3_open()接口函数创建并返 阅读全文
posted @ 2012-02-10 07:23 OrangeAdmin 阅读(17155) 评论(7) 推荐(6)
摘要: 一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。下面我们将列举一下SQLite的主要特征: 1). 管理简单,甚至可以认为无需管理。 2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。 3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。 4). 易于维护 阅读全文
posted @ 2012-02-08 07:41 OrangeAdmin 阅读(18472) 评论(11) 推荐(16)
摘要: 在从事软件开发的十多年间,我曾有幸读过多种开发语言的Effective系列,如《Effective C++》、《More Effective C++》、《Effective Java》(第一版/第二版)、《Effective C#》和《More Effective C#》,单单从这一点看也算是Effective系列的忠实拥趸了。毋庸置疑,这个系列的书籍对我们研习各种开发语言的进阶都有着极为重要的意义。 在与很多初、中、高级程序员一起合作开发期间,曾多次向他们推荐经典的专业书籍,尽管每种开发语言都有着属于自己的代表作,如C++ Primer、Thinking in Java和Essential. 阅读全文
posted @ 2012-02-06 07:48 OrangeAdmin 阅读(10257) 评论(1) 推荐(11)
摘要: 七十五、考虑使用自定义的序列化形式: 设计一个类的序列化形式和设计该类的API同样重要,因此在没有认真考虑好默认的序列化形式是否合适之前,不要贸然使用默认的序列化行为。在作出决定之前,你需要从灵活性、性能和正确性多个角度对这种编码形式进行考察。一般来讲,只有当你自行设计的自定义序列化形式与默认的形式基本相同时,才能接受默认的序列化形式。比如,当一个对象的物理表示法等同于它的逻辑内容,可能就适合于使用默认的序列化形式。见如下代码示例:1 public class Name implements Serializable {2 private final String l... 阅读全文
posted @ 2012-02-03 07:27 OrangeAdmin 阅读(3256) 评论(0) 推荐(3)
摘要: 六十六、同步访问共享的可变数据: 在Java中很多时候都是通过synchronized关键字来实现共享对象之间的同步的。事实上,对象同步并不仅限于当多个线程操作同一可变对象时,仍然能够保证该共享对象的状态始终保持一致。与此同时,他还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 Java的语言规范保证了读写一个变量是原子的,除非这个变量的类型为long或double。换句话说,读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,即时多个线程在没有同步的情况下并发地修改这个变量也是如此。然而需要特别指出的是,这样的.. 阅读全文
posted @ 2012-02-01 07:37 OrangeAdmin 阅读(4182) 评论(6) 推荐(2)
摘要: 五十七、只针对异常情况才使用异常: 不知道你否则遇见过下面的代码:1 try {2 int i = 0;3 while (true)4 range[i++].climb();5 } catch (ArrayIndexOutOfBoundsException e) {6 } 这段代码的意图不是很明显,其本意就是遍历变量数组range中的每一个元素,并执行元素的climb方法,当下标超出range的数组长度时,将会直接抛出ArrayIndexOutOfBoundsException异常,catch代码块将会捕获到该异... 阅读全文
posted @ 2012-01-30 07:24 OrangeAdmin 阅读(3271) 评论(0) 推荐(6)
摘要: 四十五、将局部变量的作用域最小化: 将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。在C语言中要求局部变量必须在一个代码块的开头处进行声明,出于习惯,有些开发者延续了这样的做法。这个习惯需要改正,Java提供了你在代码块的任何地方声明变量的语法支持。 "要使局部变量的作用域最小化,最有力的实践就是在第一次使用它的地方声明"。如果过早的声明,开发者就有可能在真正使用该变量的时候忘记了它的类型或者初始值了,而且也会带来代码块内变量名的名字污染问题,由此引发的Bug,往往是令人极为沮丧的。 "几乎每个局部变量的声明都应该包含一个初始化表达式 阅读全文
posted @ 2012-01-27 00:00 OrangeAdmin 阅读(2953) 评论(0) 推荐(1)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页