Java程序操作SQLite数据库时表不存在报错问题求助
问题分析与解决方法
嘿,我一眼就揪出你SQL语句里的问题啦!
你收到的错误[SQLITE_ERROR] SQL error or missing database (no such table: staff_clocked_in.clock_in_time),核心原因是你把表名和字段名搞混了。
看你写的SQL:
SELECT * FROM staff, staff_clocked_in.clock_in_time WHERE staff.staff_id = staff_clocked_in.staff_id;
这里的staff_clocked_in是你的表名,而clock_in_time是这个表里的字段,但你把它们连在一起写在FROM后面,SQLite会误以为你要查询一个叫staff_clocked_in.clock_in_time的表——这当然不存在啦!
修正后的SQL写法
写法1:修正原有的逗号关联方式
把FROM里的错误部分改成正确的表名,也就是同时指定staff和staff_clocked_in两个表:
SELECT * FROM staff, staff_clocked_in WHERE staff.staff_id = staff_clocked_in.staff_id;
写法2:更规范的INNER JOIN写法(推荐)
用JOIN语法来关联表,可读性更强,也不容易出错:
SELECT * FROM staff INNER JOIN staff_clocked_in ON staff.staff_id = staff_clocked_in.staff_id;
这样修改后,SQLite就能正确识别你要关联的两个表,不会再报“表不存在”的错误啦。
内容的提问来源于stack exchange,提问作者jb2003
相关产品推荐
相关产品推荐

