JAVA:从mysql表中获取单元格

时间:2012-11-30 23:37:15

标签: java sql cell

我在我的函数中得到一个名为'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;

3 个答案:

答案 0 :(得分:2)

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

使用: -

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

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

以下是您使用它的方式: -

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"));
}

答案 1 :(得分:2)

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

if (my_rs.next()) {
  System.out.println(my_rs.getString("name"));
}

答案 2 :(得分:2)

  1. 调用my_rs.next(),它会将ResultSet光标移动到第一行(您从中提取数据)。
  2. 如果这是一个真实的应用程序,请使用PreparedStatements而不是通用语句。如果您计划在SQL查询中使用用户输入,这是一个非常重要的安全问题。