Java SQL错误或缺少数据库(靠近“.”:语法错误)
SQL错误或附近缺少数据库。:语法错误Java SQL错误或缺少数据库(靠近“.”:语法错误),java,sqlite,Java,Sqlite,SQL错误或附近缺少数据库。:语法错误 public ArrayList<String> SelectCOMMUNE(String nom_wilaya,String nom_daira) { ArrayList<String> commune = new ArrayList<>(); try { String value; Class.forName("org.sqlite.JDBC");
public ArrayList<String> SelectCOMMUNE(String nom_wilaya,String nom_daira)
{
ArrayList<String> commune = new ArrayList<>();
try {
String value;
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:C:/Users/Khaled/Documents/NetBeansProjects/PFE/dataBase.db");
c.setAutoCommit(false);
stmt = c.createStatement();
try (ResultSet rs = stmt.executeQuery("SELECT NOM_COMMUNE FROM COMMUNE NATURAL JOIN DAIRA"
+ "NATURAL JOIN WILAYA"
+ "WHERE DAIRA.NOM_DAIRA= \""+nom_daira+"\" AND WILAYA.NOM_WILAYA=\""+nom_wilaya+"\";")) {
while (rs.next()) {
value = rs.getString("NOM_COMMUNE");
System.out.println(rs.getString("NOM_COMMUNE"));
commune.add(value);
}
}
stmt.close();
c.close();
} catch (ClassNotFoundException | SQLException e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
return commune;
}
当您将字符串拆分为单独的行时,缺少空格。养成在连接的字符串片段前面添加空格的习惯
ResultSet rs = stmt.executeQuery("SELECT NOM_COMMUNE FROM COMMUNE NATURAL JOIN DAIRA"
+ " NATURAL JOIN WILAYA"
+ " WHERE DAIRA.NOM_DAIRA= \""+nom_daira+"\" AND WILAYA.NOM_WILAYA=\""+nom_wilaya+"\";"))
与您的问题无关,但仍然很重要-查看准备好的语句,以避免代码中出现一些令人讨厌的SQL注入漏洞。我没有看到c的声明?它是连接c;上面的代码不包括它。请编辑它以便于阅读。让我们尝试使用\\而不是像这样编辑数据库的路径:jdbc:sqlite:C:\\Users\\Khaled\\Documents\\NetBeansProjects\\PFE\\dataBase.db检查实际执行的SQL的语法。您的代码生成的SQL中的关键字之间似乎会有一些空格。另外。。。在SQL中对字符串使用单引号的兼容性更广泛。