9

Java JDBCで行数を取得するためにさまざまな方法を試しましたが、正しい結果が得られているようには見えませんでした。私がしていることは何か問題がありますか?

顧客テーブルが空で、行数を0として取得する必要がありますが、行数がゼロ以外の値を取得する理由がわかりません。

方法1-

query = "SELECT * FROM customer WHERE username ='"+username+"'";
rs = stmt.executeQuery(query);
ResultSetMetaData metaData = rs.getMetaData();
rowcount = metaData.getColumnCount();

方法2-

query = "SELECT * FROM customer WHERE username ='"+username+"'";
rs = stmt.executeQuery(query);
rowcount = rs.last() ? rs.getRow() : 0;
4

6 に答える 6

15

次のコードスニペットを参照してください。

import java.io.*;
import java.sql.*;

public class CountRows{
    public static void main(String[] args) {
        System.out.println("Count number of rows in a specific table!");
        Connection con = null;
        int count = 0;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctutorial","root","root");
            try {
                Statement st = con.createStatement();
                BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Enter table name:");
                String table = bf.readLine();
                ResultSet res = st.executeQuery("SELECT COUNT(*) FROM "+table);
                while (res.next()){
                    count = res.getInt(1);
                }
                System.out.println("Number of row:"+count);
            }
            catch (SQLException s){
                System.out.println("SQL statement is not executed!");
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}
于 2012-10-27T18:45:22.140 に答える
3

サポートされていないJDBCをTYPE_FORWARD_ONLY使用する場合は、このメソッドを使用して行数を取得します。

Statement s = cd.createStatement();
ResultSet r = s.executeQuery("SELECT COUNT(*) AS rowcount FROM TableName");
r.next();
int count = r.getInt("rowcount");
r.close();
System.out.println("MyTable has " + count + " row(s).");

上記の方法を使用して行数を取得できます。

ありがとう..

于 2014-01-29T05:18:36.417 に答える
3

これは、Javaで行数を取得するために使用する方法です。

String query = "SELECT * FROM yourtable";

Statement st = sql.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
ResultSet = st.executeQuery(query);

int rows = 0
rs.last();
rows = rs.getRow();
rs.beforeFirst();

System.out.println("Your query have " + rows + " rows.";

これがお役に立てば幸いです。

よろしく。

于 2016-07-13T23:11:46.490 に答える
1

Androidでは、結果がない場合はエラーが返されます。したがって、 while(resultset.next())でカウントをインクリメントする前に、このケースを確認してください

if(resultset!=null)
{
//proceed with incrementing row count function
}
else
{
// No resultset found
}
于 2018-05-20T08:38:22.227 に答える
0

繰り返して数えるだけ

ResultSet result = sta.executeQuery("SELECT * from A3");
            int k=0;
            while(result.next())
                k++;

            System.out.print(k); //k is the no of row
于 2018-10-22T07:14:59.123 に答える
-1

メソッド名が指定metaData.getColumnCount()すると、結果セットの列の総数は返されますが、行の総数(カウント)は返されません。

于 2015-10-01T08:08:43.940 に答える