Java jdbc准备声明中的问题
当我尝试使用以下命令时,我会出错,为什么会这样Java jdbc准备声明中的问题,java,jdbc,Java,Jdbc,当我尝试使用以下命令时,我会出错,为什么会这样 ResultSet findByUsername(String tablename,String field,String value) { pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE ? = ? "); pStmt.setString(1,field); pStmt.setString(2,value); return(pSt
ResultSet findByUsername(String tablename,String field,String value)
{
pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE ? = ? ");
pStmt.setString(1,field);
pStmt.setString(2,value);
return(pStmt.executeQuery());
}
我也试着跟随,但也不起作用
ResultSet findByUsername(String tablename,String field,String value)
{
String sqlQueryString = " SELECT * FROM " + tablename +" WHERE " + field + "= ? ")
pStmt =cn.prepareStatement(sqlQuery);
pStmt.setString(1, value);
return(pStmt.executeQuery());
}
你有:
pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE ? = ? ");
pStmt.setString(1, tablename);
pStmt.setString(2,field);
pStmt.setString(3,value);
两个?
,但正在尝试设置三个参数
事实上,您不能通过预先准备好的语句参数设置表和列的名称
您还需要始终如一地拼写变量名,并对选中的异常采取措施
(在询问有关导致错误的代码的问题时,通常最好引用错误。)您有:
pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE ? = ? ");
pStmt.setString(1, tablename);
pStmt.setString(2,field);
pStmt.setString(3,value);
两个?
,但正在尝试设置三个参数
事实上,您不能通过预先准备好的语句参数设置表和列的名称
您还需要始终如一地拼写变量名,并对选中的异常采取措施
(在询问有关导致错误的代码的问题时,通常最好引用错误。)使用
PreparedStatement
s时,您只能替换值,而不能替换您尝试使用“WHERE?=?”的表名
关于你的第二个代码片段,除了拼写错误(“归档”),我不明白为什么会失败。您遇到了什么错误?当使用
PreparedStatement
s时,您只能在值中替换,而不能像您尝试使用“WHERE?=?”时那样替换表名
关于你的第二个代码片段,除了拼写错误(“归档”),我不明白为什么会失败。您得到了什么错误?在第一个语句中,您在查询中有两个参数,但您正在添加第三个参数,在第二个语句中,您有一个输入错误
ResultSet findByUsername(String tablename,String field,String value)
{
pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE " + field" + = ? ");
pStmt.setString(1,value);
return(pStmt.executeQuery());
}
在第一个语句中,查询中有2个参数,但您正在添加第三个参数,在第二个语句中,您有一个输入错误
ResultSet findByUsername(String tablename,String field,String value)
{
pStmt = cn.prepareStatement("SELECT * FROM" + tablename +" WHERE " + field" + = ? ");
pStmt.setString(1,value);
return(pStmt.executeQuery());
}
在第二次尝试时,请在字符串值上使用单个代码
String sqlQueryString = " SELECT * FROM " + tablename +" WHERE " + filed + " = ? ");
在比较字符串值时使用单个代码。
在字段和之间留出等于的空间
感谢您第二次使用字符串值上的单个代码进行尝试
String sqlQueryString = " SELECT * FROM " + tablename +" WHERE " + filed + " = ? ");
在比较字符串值时使用单个代码。
在字段和之间留出等于的空间
谢谢我在这里看到两个问题:
“+tablename+”
应替换为?
WHERE?=?
是完全错误的,因为事先准备好的语句的概念。准备好的语句是预编译语句,引用同一个表和列,在criterea(绑定值)下具有不同的值。不能绑定表或列名(或任何其他db对象)我在这里看到两个问题:
“+tablename+”
应替换为?
WHERE?=?
是完全错误的,因为事先准备好的语句的概念。准备好的语句是预编译语句,引用同一个表和列,在criterea(绑定值)下具有不同的值。不能绑定表或列名(或任何其他db对象)未将语句cn.prepareStatement(sqlQuery)分配给pStmt变量;应该是pStmt=cn.prepareStatement(sqlQuery);findbyid中的错误您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1null行com.MySQL.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException的“=1”附近使用的正确语法。异常:您的SQL语法有错误;在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)的第1行中,检查与您的MySQL服务器版本对应的手册,以获得在“=1”附近使用的正确语法,该语法未为pStmt变量分配语句cn.prepareStatement(sqlQuery);应该是pStmt=cn.prepareStatement(sqlQuery);findbyid中的错误您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1null行com.MySQL.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException的“=1”附近使用的正确语法。异常:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)第1行中“=1”附近使用的正确语法。在第二个示例中,分配给pStmt并更正键入可能会有帮助:)第二个没有编译。SQL字符串的末尾有一个右括号而不是分号。在以后的问题中,请确保您发布的是真实的代码,是从您的“工作”环境中复制粘贴的,以避免不必要的繁文缛节。另外,请复制粘贴异常,因为它们说明了问题的原因。此外,为了解决“无效sql语法”的问题,您还需要在这里复制实际的sql字符串,即do
System.out.println(sqlQueryString)代码>并将其结果复制到此处。也许在第二个示例中分配给pStmt并更正键入错误会有所帮助:)第二个示例无法编译。SQL字符串的末尾有一个右括号而不是分号。在以后的问题中,请确保您发布的是真实的代码,是从您的“工作”环境中复制粘贴的,以避免不必要的繁文缛节。另外,请复制粘贴异常,因为它们说明了问题的原因。此外,为了解决“无效sql语法”的问题,您还需要在这里复制实际的sql字符串,即doSystem.out.println(sqlQueryString)代码>并将其结果复制到此处。我不认为“字段”
应该是字符串文字-字段
作为参数传递。我不认为“字段”
应该是字符串文字-字段
作为参数传递。