如何从JDBC获取mySQL的特定列?

时间:2018-05-30 13:35:49

标签: java mysql database jdbc

    PreparedStatement ps2;
    ResultSet rs2;

    String username = jTextField_username.getText();
    String userpassword = jTextField_userpassword.getText();

    String sql = "SELECT distinct kalanizin from users where username =?";
    String[] resultsetarray = null;

    try {

       ps2 = MyConnection.getConnection().prepareStatement(sql);
       ps2.setString(1, username);

       rs2 = ps2.executeQuery();
       String result = rs2.getString(0); // i want this String to hold the first result

大家好。我有一个问题一直困扰着我。正如标题中所说,使用JDBC,我想从我的数据库中获取一列。例如

Select * from users where username = "blabla"

我希望Java执行此查询并获取它找到的第一行。然后放入String或Integer。正如您在顶部看到我糟糕的代码,它无法做到这一点。我试图通过使用声明来实现这一点,但它仍然没有奏效。谁能帮我?非常感谢。 PS。抱歉我可怕的变量名称并使用我的本地语言作为变量

4 个答案:

答案 0 :(得分:3)

如果您知道列名称您可以使用getString(columnLabel)之类的方法而不是getString(columnIndex)

  

以Java编程语言中String的形式检索此ResultSet对象的当前行中指定列的值。

     

columnLabel - 使用SQL AS子句指定的列的标签。如果未指定SQL AS子句,则标签列的名称

答案 1 :(得分:3)

您要求columnIndex=0的列,但列索引以1开头

您可以使用此代码,也许我以前用过,查询整个表格

public List<Article> findAll() {
    Connection connection = jdbConnectionWrapper.getConnection();
    List<Article> articles = new ArrayList<>();
    try {
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM article");
        ResultSet resultSet = preparedStatement.executeQuery();

        while (resultSet.next()) {
            Article article = new Article();

            article.setId(resultSet.getLong(1));
            article.setName(resultSet.getString(2));
            article.setPrice(resultSet.getInt(3));

            articles.add(article);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return articles;
}

答案 2 :(得分:2)

我的方法是:

1)限制查询。您可以将限制添加为1作为查询。我会鼓励你阅读它,而不是提供样品。

2)例如,仅获取所需的列。

select u.age from users u where u.username=? 

然后根据数据类型,您可以从结果集中获取它。

答案 3 :(得分:1)

您错过了ResultSet#next来电。

根据您的示例代码,您可以执行此操作:

PreparedStatement ps2;
ResultSet rs2;

String username = jTextField_username.getText();
String userpassword = jTextField_userpassword.getText();

String sql = "SELECT distinct kalanizin from users where username =?";
String[] resultsetarray = null;

try {
   ps2 = MyConnection.getConnection().prepareStatement(sql);
   ps2.setString(1, username);

   rs2 = ps2.executeQuery();
   if(rs2.next()) { // moving to the first row
       String result = rs2.getString(1); // i want this String to hold the first result
   } else {
       // throw Exception ?
   }
} catch (SQLException e) {
    e.printStackTrace();
}