1

我在我的函数中得到一个名为“id”的参数,并想打印这个 id 行名称的单元格。

例如:

这是我的桌子:

id     name        email
1      alon     alon@gmail.com

我发送到我的函数:func(1),所以我希望它打印“alon”。

这是我尝试过的:

static final String url = "jdbc:mysql://localhost:3306/database_alon";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, "root", "Admin");
String query_txt = "SELECT * FROM authors WHERE id = " + id;
Statement ps2 = con.createStatement();
ResultSet my_rs = ps2.executeQuery(query_txt);
System.out.println(my_rs.getString("name"));
con.close;
4

3 回答 3

2

一切都很好,但只有一个问题。在获取任何值之前,您需要将ResultSet光标移动到第一行:-

利用: -

ResultSet my_rs = ps2.executeQuery(query_txt);
while (my_rs.next()) {
    System.out.println(my_rs.getString("name"));
}

作为旁注,请考虑使用PreparedStatement以避免受到 SQL 注入的攻击。

这是你如何使用它: -

PreparedStatement ps2 = con.prepareStatement("SELECT * FROM authors WHERE id = ?");
ps2.setInt(1, id);
ResultSet my_rs = ps2.executeQuery();

while (my_rs.next()) {
    System.out.println(my_rs.getString("name"));
}
于 2012-11-30T23:39:23.723 回答
2

您需要使用ResultSet.next()导航到返回的数据:

if (my_rs.next()) {
  System.out.println(my_rs.getString("name"));
}
于 2012-11-30T23:39:36.553 回答
2
  1. 调用 my_rs.next(),它将 ResultSet 光标移动到第一行(从中提取数据)。
  2. 如果这是一个真实的应用程序,请使用 PreparedStatements 而不是通用语句。如果您计划在 SQL 查询中使用用户输入,这是一个极其重要的安全问题。
于 2012-11-30T23:41:11.480 回答