Java 如何更改PreparedStatement中from子句的表名

Java 如何更改PreparedStatement中from子句的表名,java,jdbc,Java,Jdbc,嗨,我有一个小问题,我如何切换表格以从中获得结果?? 下面的代码不起作用。不过,这应该会让您了解我正在尝试做什么。 谢谢你的帮助 String typelogin=null; if(xx){ typelogin="users_table"; }else{ typelogin="admin_table"; } String sqlStr = "Select * from "+typelogin+" where username=? and userpassword=?"; Prepar

嗨,我有一个小问题,我如何切换表格以从中获得结果?? 下面的代码不起作用。不过,这应该会让您了解我正在尝试做什么。 谢谢你的帮助

String typelogin=null;
if(xx){
   typelogin="users_table";
}else{
   typelogin="admin_table";
}
String sqlStr = "Select * from "+typelogin+" where username=? and userpassword=?";
PreparedStatement stmt = conn.prepareStatement(sqlStr);
完整代码:

Statement stmt = conn.createStatement();

            String sqlStr = "Select * from "+typelogin+" where username=? and userpassword=?";


            PreparedStatement pstmt=conn.prepareStatement(sqlStr);
            pstmt.setString(1,user);
            pstmt.setString(2,password);
            //step 6 Process result
            ResultSet rs = pstmt.executeQuery();
我得到的错误是:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fromspmovy_admin where username='abc' and userpassword='abc'' at line 1
答复[已解决]:

忘了放空白

from " + typelogin + " where

如果你会用?对于传递变量,必须使用PreparedStatement而不是语句。此外,根据您的错误消息,您需要在from(检查fromspmovy_admin)之后添加一个空格

是否使用?对于传递变量,必须使用PreparedStatement而不是语句。此外,根据错误消息,您需要在from(检查fromspmovy_admin)

之后添加一个空格,错误消息:
'fromspmovy_admin,其中…
看起来您在
from
和表名之间遗漏了一个空格。确保在所有方法中都以正确的方式执行此操作(请注意,在当前示例中,这种情况不会发生)。

从错误消息中:
'fromspmovy\u admin,其中…
中的
与表名之间似乎缺少空格。确保您在所有方法中都以正确的方式执行此操作(请注意,在您当前的示例中,这不会发生)。

我正在使用准备好的语句好的,我对我使用的完整代码进行了编辑,请查看。谢谢我正在使用准备好的声明好的,我对我正在使用的全部代码进行了编辑,请看一看。感谢您的错误消息:
”来自SPMOVY\u admin,其中…
看起来您遗漏了来自
和表名之间的空格。确保你在所有的方法中都以正确的方式来做这件事。@LuiggiMendoza好吧,这就是问题所在。非常感谢你,请回答这里的确切问题,这样我就可以选择这个作为答案,非常感谢您的错误消息:
'fromspmovy\u admin,其中…
中的
与表名之间似乎缺少空格。请确保您在所有方法中都以正确的方式进行操作。@LuiggiMendoza好吧,这就是问题所在。非常感谢您,请在这里回答确切的问题,以便我可以选择此作为答案,非常感谢