首页 > 解决方案 > 如何为 JDBC fetch 语句创建可测试的代码

问题描述

我正在尝试创建一个用于学习的 JDBC 可测试示例代码。所以我从https://www.tutorialspoint.com/jdbc/jdbc-sample-code.htm获取了一个示例代码, 但是我很难创建可测试的方法。在 Eclipse 中,我创建了一个默认测试类,我想测试以检查结果是否返回 7 条记录(因为我从数据库中的员工表中获取 7 条记录)

有人可以给我建议吗?

我现在拥有的代码是

package src;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcTestCode {

    public static void main(String[] args) {
        System.out.println("Start...");

        // JDBC driver name and database URL
        String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
        String DB_URL = "jdbc:oracle:thin:@..........";

        // Database credentials
        String USER = "please_login_here";
        String PASS = "please_login_here";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // STEP 2: Register JDBC driver
            Class.forName(JDBC_DRIVER);

            // STEP 3: Open a connection
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // STEP 4: Execute a query
            System.out.println("Creating statement...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, first_name, last_name FROM Employee ORDER BY id FETCH FIRST 7 ROWS ONLY";
            rs = stmt.executeQuery(sql);

            // STEP 5: Extract data from result set
            while (rs.next()) {
                // Retrieve by column name
                int id = rs.getInt("id");
                String first = rs.getString("first_name");
                String last = rs.getString("last_name");

                // Display values
                System.out.print("ID: " + id);
                System.out.print(", First: " + first);
                System.out.println(", Last: " + last);
            }

            // STEP 6: Clean-up environment

        } catch (SQLException se) {
            // Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            // Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            // finally block used to close resources
            try {
                if (rs != null)
                    rs.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }

            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException se2) {
                se2.printStackTrace();
            } // nothing we can do
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se3) {
                se3.printStackTrace();
            } // end finally try
        } // end try
        System.out.println("testing withg JDBC driver");

        System.out.println("End...");

    }

}

eclipses创建的默认测试代码是package src;

导入静态 org.junit.Assert.*;

import org.junit.Test;

public class JdbcTestCodeTest {

    @Test
    public void test() {
        fail("Not yet implemented");
    }

}

我正处于学习阶段,所以如果我问一个非常简单的问题,请多多包涵。

标签: java

解决方案


推荐阅读