Java / SQL - Count(*) 的用法

我有一個database 己經connect左,

可以行到 insert, delete, update, select 的statement

但當我...

int count =0;

sql = "select count(*) from table";

count=Stmt.executeUpdate(sql);

總是找不到結果, 請問正確寫法是如何!(java implementation)

thanks & merry x'mas

2 個解答

評分
  • ?
    Lv 4
    1 十年 前
    最佳解答

    試下:

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    public class CountRecordsUsingPreparedStatement {

    public static Connection getConnection() throws Exception {

    String driver = "oracle.jdbc.driver.OracleDriver";

    String url = "jdbc:oracle:thin:@localhost:1521:databaseName";

    String username = "name";

    String password = "password";

    Class.forName(driver);

    Connection conn = DriverManager.getConnection(url, username, password);

    return conn;

    }

    public static void main(String[] args) {

    ResultSet rs = null;

    Connection conn = null;

    PreparedStatement pstmt = null;

    try {

    conn = getConnection();

    String query = "select count(*) from tableName";

    pstmt = conn.prepareStatement(query);

    rs = pstmt.executeQuery();

    if (rs.next()) {

    int numberOfRows = rs.getInt(1);

    System.out.println("numberOfRows= " + numberOfRows);

    } else {

    System.out.println("error: could not get the record counts");

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    rs.close();

    pstmt.close();

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

    }

    2006-12-21 01:29:04 補充:

    基本上係1. select count(*) from tableName2. pstmt = conn.prepareStatement(query);3. rs = pstmt.executeQuery();4. int numberOfRows = rs.getInt(1);因為count(*)既result 已store 係 result set 既第一個位~

  • 1 十年 前

    補充一下樓上o個位的答案, 佢個方法work, 你個方法唔work係因為Stmt.executeUpdate(sql) return o個個integer其實係講緊你句sql "影響o左幾多個records", 但你想知的其實係你句sql return返o來的第一個"field value"

    所以你係要用rs.getInt(1)先得, 而唔係直接攞executeUpdate個return value

還有問題嗎?立即提問即可得到解答。