Java / SQL - Count(*) 的用法

2006-12-21 9:22 am
我有一個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)

2006-12-21 9:26 am
✔ 最佳答案
試下:

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 既第一個位~
2006-12-21 6:43 pm
補充一下樓上o個位的答案, 佢個方法work, 你個方法唔work係因為Stmt.executeUpdate(sql) return o個個integer其實係講緊你句sql "影響o左幾多個records", 但你想知的其實係你句sql return返o來的第一個"field value"

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


收錄日期: 2021-04-13 15:57:11
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20061221000051KK00215

檢視 Wayback Machine 備份