登录应用查询SQLite数据库时出现java.sql.SQLException问题排查
问题排查与修复
嘿,我一眼就瞅出你代码里的问题啦!这个java.sql.SQLException完全是SQL语句的语法错误导致的,和数据库连接、表存在与否没关系,具体问题有两个:
WHERE子句的条件没加逻辑连接符
你写的select * from Login where username=? Password=?&...里,username=?和Password=?之间没有用AND(验证凭据肯定要同时满足用户名和密码,所以用AND)来连接。SQL解析器根本看不懂这种写法,会直接判定为语法错误。末尾的
&...是无效字符
语句最后那个&...完全是多余的垃圾字符,它不属于SQL语法的一部分,会进一步让数据库无法正确解析你的查询。
修正后的代码示例
try { // 修正语法错误,添加AND并移除无效字符 String query = "select * from Login where username=? AND password=?"; // 接下来记得用PreparedStatement设置参数,比如: // PreparedStatement pstmt = conn.prepareStatement(query); // pstmt.setString(1, inputUsername); // pstmt.setString(2, inputPassword); // ResultSet rs = pstmt.executeQuery(); // 然后处理结果集... } catch (SQLException e) { e.printStackTrace(); }
另外再提醒你两点:
- 用
PreparedStatement的时候一定要按顺序设置参数,既能避免SQL注入,也能保证参数正确绑定; - 虽然SQL关键字不区分大小写,但字段名尽量和数据库里的
Login表保持一致(比如如果数据库里是password小写,代码里也统一小写,避免不必要的问题)。
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

