1、在PC环境下启动一个模拟器(不是手机)
2、查看模拟器 /systen/xbin是否有sqlite3命令
adb shell
cd /system/xbin
ls
3、把模拟器 /system/xbin/sqlite3命令文件从模拟器拷到PC上
adb pull /system/xbin/sqlite3 e:/eclipse
4、关闭模拟器,把Android手机连接到PC
5、获取Android手机 /system 文件夹的读取权限
adb shell # mout -o remout, rw -t yaffs2 /dev/block/mtdblock3 /system
(根据自己的设备网上很多人的设备是这个)
6、把PC上的e:/eclipse/sqlite3文件拷到Android手机的/system/xbin/目录下
adb push e:/sqlite3 /system/xbin
若是提示permission denial
adb shell
chmod 777 system/
cd system
chmod 777 xbin
若提示不能修改 /system权限则输入:
mount -o remount,rw /system
继续执行:
adb shell
chmod 777 system/
cd system
chmod 777 xbin
然后执行上面的 push
若是还是不行就直接 到eclipse DDMS filter explore 下面 /system/xbin
把所用的数据直接从电脑上拖到 /system/xbin 下面
7、修改Android真机/system/xbin/sqlite3命令的权限
adb shell
chmod 4755 /system/xbin/sqlite3
然后输入sqlite3
进入到sqlite就可以了。
若是能执行则说明数据库安装好了
8
android 数据库是建立在
/data/data/项目com.example.name/databases/数据库名
进入目录下面打开数据库
sqlite3 database_name.db .
若是打不开则把数据库的权限改成777或755就可以了。
Chmod 777 database_name
若是要进行写操作则必须把所有目录的写权限设置了
/data/data/项目com.example.name/databases/数据库名人
数据库前面所有的权限都改了
例
chmod 777 data
cd data
chmod 777 data
cd data
然后就可以执行sqlite3 数据库名就可以了。
执行SQLite3若提示:
sh: /system/xbin/sqlite3: not executable: magic 7F45
表示要使用跟你真机CPU型号相同的sqlite3文件
9帮助 .help 获得帮助
退出数据库.quit
下面是补充些问题
首先 adb shell
Mount
然后会看到下面一行
上面在windows使用的 adb # mount -o ..............
在adb shell 下面可以使用下面命令
Mount -r -w remount -t rfs /dev/block/sti9 /system
rfs 与 sti9 都是根据上面的一个图看到的。 根据你自己的设备写
最后
Mount -r -o remount -t rfs /dev/block/sti9 /system
重新remount一下 为了安全。。。
常用命令;
.databases 查看所有数据库
.tables 查看所有表
.dump 查看所有插入语句
.schame table_name 查看表结构
查了半天sqlite的手册,没找到怎么修改列名。最后用了一个很笨的方法。
这里我要把post的tbl重命名为tb_l。
首先重命名post表。
ALTER TABLE post RENAME TO tmp_post;
在重新创建post表。
1
2
3
4
CREATE
TABLE
post(
id
integer
primary
key
autoincrement,
tb_l
varchar
(128)
not
null
);
把tmp_post的数据导入post,并删除tmp_post;
insert into post (tb_l) select tbl from tmp_post;
drop table tmp_post;
如果原表tmp_post和新创建的标post列数一致,并且是一一对应的话,可以用一下语句导入。
insert into post select * from tmp_talbe;
--------------------------------------
使用Sqliteman修改表时,遇到一个问题,每当添加或修改列信息时,作为主键的信息就会丢失,所以只能自己写Sql执行了。示例:
这里我要把post的tbl重命名为tb_l。
首先重命名post表。
ALTER TABLE post RENAME TO tmp_post;
在重新创建post表。
1
2
3
4
|
CREATE
TABLE
post(
id
integer
primary
key
autoincrement,
tb_l
varchar
(128)
not
null
);
|
insert into post (tb_l) select tbl from tmp_post;
drop table tmp_post;
如果原表tmp_post和新创建的标post列数一致,并且是一一对应的话,可以用一下语句导入。
insert into post select * from tmp_talbe;
--------------------------------------
使用Sqliteman修改表时,遇到一个问题,每当添加或修改列信息时,作为主键的信息就会丢失,所以只能自己写Sql执行了。示例:
SQLite的最大特点是你可以吧各种类型的数据保存到任何字段中,而不用关心字段的数据类型。主键除外。主键只能保存64位整数。既然类型不太明确。我想你存的类型是什么就应该是什么类型,不会报错的。也就是无类型。
* SQLite支持表名的修改和增加列
* 1,修改表名:ALTER TABLE oldtablename RENAME TO newtablename;
* 2,增加列:ALTER TABLE tablename ADD COLUMN fieldname fieldtype;
更新数据 update mytab set columon ='date' where id=10;