Java SQL LITE:准备好的语句可以做到:从?

Java SQL LITE:准备好的语句可以做到:从?,java,sql,sqlite,prepared-statement,Java,Sql,Sqlite,Prepared Statement,这很有效 SELECT * " + "FROM Table1 " + "WHERE Username = ? " + "AND Password = ?;"); PreparedStatement.setString(1, "Albert"); PreparedStatement.setString(2, "123"); OR USING VARIABLES 这并不是: java.sql.SQLException:[SQLITE_ERROR]sql错误或缺少数据库(靠近“?”:语法错误) 为

这很有效

SELECT * "
+ "FROM Table1 "
+ "WHERE Username = ? "
+ "AND Password = ?;");

PreparedStatement.setString(1, "Albert");
PreparedStatement.setString(2, "123"); OR USING VARIABLES
这并不是:

java.sql.SQLException:[SQLITE_ERROR]sql错误或缺少数据库(靠近“?”:语法错误)

为什么我不能使用一个?在“发件人”部分中。这是不允许的还是我的陈述在某种程度上是错误的


我需要用一个电话吗?在FROM部分中,我有一个函数将此语句用于多个表。我可以复制这个函数三次。每个表一个,但这似乎毫无意义。

占位符不适用于表名或列名,它只适用于值。要添加到@Berger的注释中,通常查询中使用的表将在服务器端固定,客户端无论如何也无法控制。因此,准备好的语句不以这种方式支持表名。
SELECT * "
+ "FROM ? "
+ "WHERE Username = ? "
+ "AND Password = ?;");

myPreStatement.setString(1, "Table1");
myPreStatement.setString(2, "Albert");
myPreStatement.setString(3, "123"); OR USING VARIABLES