我在询问之前已经为此做过准备,但我不知道我做错了什么或是什么。
我正在尝试做类似的事情:
setupActionBarWithNavController()
但得到了
SQLException:参数索引超出范围(1>参数个数,为0)。
顺便说一下,我是新来的,我已经编程了不久,这是我第一次尝试使用String query = "select nombre from DatosPersonas where nombre = '?'";
System.out.println("Introduce nomber a buscar");
String nom = teclado.next();
PreparedStatement pstmt = (PreparedStatement)cn.prepareStatement(query);
pstmt.setString(1, nom);
ResultSet rs1 = pstmt.executeQuery(query);
while (rs1.next()) {
String nombre = rs1.getString("nombre");
System.out.println(nombre);
}
。谢谢
答案 0 :(得分:2)
您需要使用?
代替'?'
:
String query = "select nombre from DatosPersonas where nombre = ?";
这样?
被视为可以用pstmt.setString(1, nom);
填充的占位符,否则它是查询中的静态字符串。
此外,您使用了错误的方法as AxelH points out in his answer。
答案 1 :(得分:2)
使用f1sh answer更正查询后,您将遇到第二个问题。
您执行了错误的方法。目前,您没有使用已定义的PreparedStatement
实例,而是像String
一样执行Statement
查询。
您需要执行PrepatedStatement.executeQuery()
,而不是Statement.executeQuery(String)
。
SO使用ResultSet rs1 = pstmt.executeQuery();
。
答案 2 :(得分:-2)
尝试使用此代码
String query = "select nombre from DatosPersonas where nombre = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
if(!isInteger()){
pstmt.setString(1, nom);
ResultSet testExecutions = pstmt.executeQuery();
while (pstmt.next()) {
String nombre = pstmt.getString(1);
}
}
检查字符串的方法
public static boolean isInteger(String input )
{
try
{
Integer.parseInt( input );
return true;
}
catch( Exception )
{
return false;
}
}