java我想在我的sql数据库中添加一个搜索,通过id获取名称的函数会创建一个错误
我有一个音乐数据库,所以我需要一个搜索功能,现在当进入搜索栏时,我得到一个错误:“JDBC调用中的参数无效:参数索引超出范围:1”
public static Song getSongByName(String name)
{
String sql =
"SELECT songID FROM Song "+
"WHERE name = '?'; ";
Connection conn = Connections.getConnection();
Song erg = null;
try
{
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
ResultSet rs = pstmt.executeQuery();
rs.next();
int id = rs.getInt (1);
name = rs.getString (2);
erg = new SongImpl(id,name);
rs.close();
pstmt.close();
}
catch(SQLException exc)
{
System.err.println("Fehler: in SQL-Aufruf");
System.err.println("["+sql+"]");
exc.printStackTrace();
System.exit(6);
}
Connections.putConnection(conn);
return erg;
}
# 1 楼答案
看起来你只选择了一列而不是两列
正确的SQL查询应该是:
试试这个:
如果有帮助,请告诉我:)
# 2 楼答案
看看例子https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
尝试删除单引号:
您应该使用不带引号的字符串参数,因为您的语句被解释为不带参数的SQL查询