- 浏览: 3560744 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
今天碰到了一个奇怪的问题,关于sqlite数据自增的。
我们用mysql的时候,设置主键自增,那么我们插入一条数据,主键会从1开始的,这个sqlite数据要注意了,或许,他开始的不是1,而是一个很大的数。原因待查,下面是我遇到的情况。
网上有人说:
网上查到资料说,从 SQLite 的 2.3.4 版本开始, 如果将一个表中的一个字段声明为 INTEGER PRIMARY KEY, 那么只需向该表的该字段插入一个 NULL 值,这个 NULL 值将 自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表 为空,那么将被更换为 1。 一个新的API函数 sqlite3_last_insert_rowid()返回最近的 插入操作的整形键.注意这个整型键始终比之前插入表中的最后一个 键大1。新键相对于表中的已有键来说是唯一的, 但它可能与之前 从表中删除的键值重叠。要始终得到在整个表中唯一的键,在INTEGER PRIMARY KEY的声明之前加关键词AUTOINCREMENT.这样被选的键将 总是比表中已存在的最大键大1。若可能的最大键已存在于表中,INSERT 操作将失败并返回一个SQLITE_FULL错误码.
下面一句是关键句:
这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数
我遇到的情况是:
在android的数据库中,我有一张表A,里面有数据要复制表B中
表A:
create table A ( id integer, name text )
表B:(表B比表A多一个字段keyid,并且这个字段是递增的)
CREATE TABLE B ( keyid integer PRIMARY KEY autoincrement, id Integer, name text )
我将表A中的数据查询到复制到表B中去:(在操作这个步骤前表B中是有数据的)
首先执行的是删除表B的数据: delete from B; 然后执行查询表A的数据插入到表B中去: insert into B (id, name) select id,name from A ;
但是奇怪的事情是:
表B中的keyid字段并不是从1开始的。
以下是分析和解决方法:
-----------------------------------------------------------
我在将查询到A的数据插入B之前,B里面是有数据的,我首先做了删除B的数据为空。这一步是关键了,因为清空到B中的数据前,B中是有数据的,主键keyid是有值的,这个值将影响到下一次插入数据的keyid自增的数据的。具体的原因我也不知道。
解决方法是:
1.删除掉B
2.创建B
3.查询A插入到B
结果是B的主键是从1开始的
drop table B; CREATE TABLE B ( keyid integer PRIMARY KEY autoincrement, id Integer, name text ) insert into B (id, name) select id,name from A ;
这样就可以让B自增从1开始了。
发表评论
-
android离线
2019-11-04 21:25 293https://www.jianshu.com/p/fdfc4 ... -
android 异步更新
2015-07-11 22:42 1496http://www.apkbus.com/forum.php ... -
仿微米
2015-06-26 10:22 0http://www.javaapk.com/source/4 ... -
仿微信
2015-06-26 10:21 1914http://www.javaapk.com/source/1 ... -
网易客户端
2015-06-26 10:20 1598http://www.javaapk.com/source/4 ... -
仿朋友圈
2015-06-26 10:18 1697http://www.javaapk.com/source/8 ... -
仿朋友圈
2015-06-26 10:13 1831http://www.eoeandroid.com/threa ... -
全国ABC查询
2015-06-26 10:07 1361IM 功能 环信云 信息统计 Umeng 分享Umeng 更新 ... -
android 判断网络
2015-06-25 16:00 1261http://www.cnblogs.com/renqingp ... -
android 多彩表格
2015-05-31 16:06 1469http://blog.csdn.net/conowen/ar ... -
android socket
2015-05-31 16:01 1640http://blog.csdn.net/conowen/ar ... -
微信播放语音3
2015-02-25 12:00 1427http://download.csdn.net/detail ... -
微信语音播放2
2015-02-25 11:57 1349http://download.csdn.net/detail ... -
微信语音播放
2015-02-25 11:56 1697http://www.apkbus.com/android-1 ... -
超强的资料整合
2015-01-05 11:04 1219http://zz563143188.iteye.com/bl ... -
最强开发资源平台大合集
2015-01-04 14:50 1882程序员代码应用开发平 ... -
Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
2014-09-04 15:45 1371http://blog.csdn.net/vipzjyno1/ ... -
android应用推广
2014-09-03 23:25 1309应用推广不必愁,有米 ... -
android 图片异步加载
2014-09-03 16:47 1127http://www.csdn.net/article/201 ... -
android hander的使用
2014-09-02 23:46 1356http://www.cnblogs.com/xiaoran1 ...
相关推荐
在本教程中,我们将探讨如何在Android的SQLite数据库中设置主键自增长的方法。 首先,我们来明确自增长主键的两个关键条件: 1. 在数据库表结构设计时,需要将主键字段声明为`INTEGER PRIMARY KEY`。这表明该字段...
对于支持主键自增的数据库,如MySQL、SQLite、PostgreSQL等,系统会自动为每个新插入的记录生成一个唯一的主键值,无需手动设置。 在Java开发中,MyBatis作为一个轻量级的持久层框架,广泛应用于数据操作。MyBatis...
使用`execSQL`方法执行SQL语句创建一个名为`person`的表,包含三个字段:`_id`为主键自增,`name`为字符串类型,`age`为短整型。 3. **插入数据**: - 直接使用`execSQL`方法执行SQL语句插入数据: ```java db...
5. 主键(Primary Key):用于唯一标识一行数据的列,通常设置为自增ID。 使用SQLite数据库查看器,你可以: 1. 查看所有数据库:查看设备上所有已创建的SQLite数据库文件。 2. 打开数据库:选择特定的数据库文件,...
如 INTEGER PRIMARY KEY AUTOINCREMENT 表示该字段为整数类型的主键并且是自增的。如果某个字段设置为NOT NULL,则该字段不能存储NULL值。 查询数据时,可以使用SELECT语句配合各种条件和排序方式。例如,可以使用 ...
这里,`_id` 是一个自增的主键,`name` 存储用户姓名,`email` 存储用户邮箱,且邮箱字段必须是唯一的。 查询数据则使用`SELECT` 语句,例如获取所有用户: ```sql SELECT * FROM Users; ``` 更新数据使用`UPDATE...
在Android开发中,SQLite是一个轻量级的数据库系统,它被广泛用于存储应用程序的数据。`DatabaseUtil` 类是用于封装SQLite数据库操作的一个实用工具类,它简化了与数据库的交互,使得开发者能更方便地执行增删查改等...
`_id`字段是自增主键,`name`和`email`是文本字段,`email`字段设为唯一。 3. **插入数据** 使用`SQLiteDatabase`对象的`insert()`方法来插入数据。首先,打开数据库连接,然后调用`insert()`,传入表名、空值...
这里,`_id`是自增的主键,`name`、`email`和`password`是表的字段,`NOT NULL`和`UNIQUE`分别表示约束条件。 然后,我们可以使用SQLiteOpenHelper的子类实例化的SQLiteDatabase对象进行数据操作。如插入数据,使用...
总的来说,"安卓Android源码——树形主键.zip"可能包含了一个完整的示例,演示了如何在Android应用中使用SQLite存储树形结构数据,并在UI上展示。这涉及到数据库设计、SQLite操作、数据结构理解和自定义Adapter的...
1. 数据库设计:用户可以通过直观的界面来创建新的数据库表,定义字段类型(如整型、浮点型、文本、日期时间等),设置主键和外键约束,以及自增属性。 2. SQL查询编辑器:提供了一个内置的SQL编辑器,允许用户输入...
1. 数据库创建:你可以通过这个工具创建新的SQLite数据库,定义表结构,设置字段类型、主键、外键等关系,以及自增、非空等约束。 2. 表管理:对已有的表格进行修改,添加、删除或修改字段,重命名表格,以及检查表...
在Android应用开发中,SQLite数据库是一个轻量级的、嵌入式的关系型数据库,它被广泛用于存储应用内的数据。SQLite数据库提供了高效、可靠且易于使用的数据存储解决方案,尤其适合移动设备,因为它们通常资源有限。 ...
1. SQLITE 简介 SQLite 是一个开源、轻量级的嵌入式数据库系统,它不需要独立的服务器进程,而是作为应用程序的一部分运行。SQLite 支持标准的关系型数据库特性,如 SQL 语言、事务处理等,并且具有高度的可移植性,...
这里,`id`是主键,`AUTOINCREMENT`表示自增。 3. 插入数据: 使用`INSERT INTO`语句将数据插入表中: ```sql INSERT INTO Students (name, age) VALUES ('张三', 20); ``` 4. 查询数据: `SELECT`语句用于...
在当前移动应用开发中,Android平台上的本地数据存储经常使用SQLite数据库。SQLite是一种轻量级的数据库系统,它支持标准的SQL语言,通过一组简单的命令和关键字来管理数据。在这一部分中,我们将详细解析文件内容所...
这里`_id`通常作为主键,`AUTOINCREMENT`确保每次插入新行时主键自增。 3. **onUpgrade()**: 当数据库版本号增加时,此方法会被调用,用于升级旧版本的数据库到新版本。例如,添加新的表或修改现有表的结构。 `...
4.实现功能:实现了主键自增和不自增控制方法的重载.默认使用主键自增, //insert(entity)方法Id会自增,相当于调用insert(entity,true); //使用insert(entity,false)这样方式可以插入有固定Id的数据 5.支持代码混淆...
// 这里定义了用户表user_tb,包含_id(主键自增)、userID(非空文本)、pwd(非空文本) db.execSQL("create table if not exists user_tb(_id integer primary key autoincrement, " + "userID text not null,...