【问题标题】:How to retrieve data using JDBC如何使用 JDBC 检索数据
【发布时间】:2012-07-01 08:47:23
【问题描述】:

我一直在尝试使用以下代码。

正在建立连接。但是resultSet 是空的(非空),而数据库中有几个相同的条目(每个 2 个字段)。

不进入while条件。我是 JDBC 新手,请帮忙!

我的代码是:

import java.sql.*;

public class JDBCTest123
{

    public static void main(String[] args)
    {
        System.out.println("oracle Connect Example.");
        Connection conn = null;
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        String driver = "oracle.jdbc.driver.OracleDriver";
        String userName = "system";
        String password = "mumpymamai";
        Statement stmt = null;
        String query = "select * from table1";  
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, password);
            stmt = conn.createStatement();
            System.out.println("Connected to the database");
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next())
            {
                System.out.println(rs.getString(1));
                System.out.println(rs.getString(2));
            }
            conn.close();
            System.out.println("Disconnected from database");
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

输出是:

oracle Connect Example.
Connected to the database
Disconnected from database

【问题讨论】:

  • 按原样正确格式化输出(尽管在这种情况下很明显,按照终端显示的方式提供输出通常是一个好习惯。)

标签: database jdbc resultset


【解决方案1】:

建议很少。我建议您使用更快、更安全的PreparedStatements

PreparedStatement ps = null;
conn = DriverManager.getConnection(url, userName, password);
ps = conn.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while (rs.next())
{
   // do some work
}

第二个建议,在 finally 块中调用 close() 方法,因为应用程序可能会崩溃,然后您的连接将不会关闭。 finally 块保证将始终被调用。


第三个建议,如果没有Exception 就不行,可能你有空表。

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 2011-11-04
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2013-03-07
    • 2012-09-01
    相关资源
    最近更新 更多