这位网友的教程 使用的是现成已用的数据库 !!!!!!此教程目前有点问题,现在wxbit ai2中不支持直接操作外部数据库
先看Android中sqlite中的说明 。数据库在软件的私有目录里,不root是看不到的,为什么不应该直接操作外部数据库,这是安卓为了隐私数据安全设置的。
为什么要设置数据库名,如果不设置数据库名则只在内存中运行,程序关了啥都不保存。并且一个软件可以有多个数据库.默认的数据库名是sqlite.db
如果要使用外部数据可,需要在确保没有数据库的前提下导入外部数据库,注意这里会完全外部覆盖程序的私有数据库
这一句是在某些低版本的安卓手机(测试6.0)上避免没有本身没有数据库导致无法导入,记得先打开数据库。并且在第二次运行程序的时候才会正确导入。在我的红米note5(11)上则没有这问题
如果要在别的屏幕使用数据库,则需要在初始化时候设置数据库名
我们使用非常火的Navicat来图形化成sql语句, ,使用内置的运行sql函数来生成表
先新建一个sqlite文件,然后新建一个表
在sql预览里可以看到 新建表的sql语句 粘贴出来,然后修改下表名
CREATE TABLE "main"."学生" (
"学号" integer NOT NULL,
"姓名" TEXT NOT NULL,
"年级" integer NOT NULL,
PRIMARY KEY ("学号")
);
这个语句就可以用来新建表-学生。同理获得创建表-老师的sql语句
CREATE TABLE "main"."老师" (
"姓名" TEXT,
"科目" TEXT,
"性别" TEXT
);
第一步先打开数据库,数据库名就是数据库的路径,如果路径不存在的话会自动新建文件
新建表的sql语句
现在是空表,在表里添加数据
点对勾,就会显示sql语句
当然,我们也可以用ai2的现成语句,等同于上边语句,不过这个一次只能插入一条,要运行多个语句,得用运行sql文件路径那个函数
navcat可以用工具自动添加查询语句,点击查询创建工具
生成sql语句 ,distinct表示结果不重复
SELECT DISTINCT
"老师"."姓名",
"老师"."科目",
"老师"."性别",
"学生"."姓名",
"学生"."学号"
FROM
"老师",
"学生"
GROUP BY
"学生"."学号"
然后运行
注意这里的回调,sql的查询结果会传递给回调函数的运行结果,是一个单层列表或者双层列表
把数据库导出到文件里