不嫌麻烦的话可以先用SQL得到数据集的列数
select count(*) sometable where xxx=xxx又或者可以用ResultSet的getRow()方法得到数量,返回一个INT类型用序号操作其实每个ResultSet getXXX方法都支持比如:
String getString(int columnIndex)
String getString(String columnName) 明白?还用再详细说明吗?
select count(*) sometable where xxx=xxx又或者可以用ResultSet的getRow()方法得到数量,返回一个INT类型用序号操作其实每个ResultSet getXXX方法都支持比如:
String getString(int columnIndex)
String getString(String columnName) 明白?还用再详细说明吗?
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
cols = rsmd.getColumnCount();通过序号操作数据集不是很方便。给你一个例子参考:import java.io.*;
import java.util.*;
import java.sql.*;public class JDBCBean { String classname ; // JDBC driver class
String url ;
String username ;
String password ;
String query ; // the SQL statement.
int rows, cols; // the number of rows and columns of the result.
Vector result; public void setClassname(String classname) {
this.classname = classname;
} public String getClassname() {
return classname;
} public void setUrl(String url) {
this.url = url;
} public String getUrl(){
return url;
} public void setUsername(String username) {
this.username = username;
} public String getUsername() {
return username;
} public void setPassword(String password) {
this.password = password;
} public String getPassword() {
return password;
} public void setQuery(String query) {
this.query = query;
} public String getQuery() {
return query;
} protected void go()
throws ClassNotFoundException, SQLException
{ // Load the JDBC driver
Class.forName(classname);
// get the connection to the database
Connection con = DriverManager.getConnection(url, username,
password);
// create and execute the query
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
cols = rsmd.getColumnCount();
rows = 0;
result = new Vector();
String s[] = new String[cols];
for (int i=1; i<=cols; i++) {
s[i-1] = rsmd.getColumnLabel(i) ;
}
result.addElement(s);
rows ++;
// for entire data
while (rs.next()) {
s = new String[cols];
// for one row
for (int i=1; i<=cols; i++) {
s[i-1] = helper(rs, rsmd.getColumnType(i), i);
}
result.addElement(s);
rows ++;
}
}
public static void main (String[] args)
{
JDBCBean jdbcBean = new JDBCBean();
String classname = "com.imaginary.sql.msql.MsqlDriver";
//String url = "jdbc:msql://gaby.eng:4333/demo";
String url = "jdbc:msql://ridgetop.eng:1114/test";
String username = "lfu";
String password = "password";
//String query = "select * from details";
String query = "select * from table1"; jdbcBean.setClassname(classname);
jdbcBean.setUrl(url);
jdbcBean.setUsername(username);
jdbcBean.setPassword(password);
jdbcBean.setQuery(query);
try {
jdbcBean.go();
System.out.println("Seems okay");
} catch (Exception ex) {
ex.printStackTrace();
}
}
//
// Result methods
// public int getColumnCount() {
return cols;
} public int getRowCount() {
return rows;
} public String getColumnLabels(int col) {
String[] s = (String[])result.firstElement();
return s[col];
} public String getCell(int col, int row) {
String[] s = (String[])result.elementAt(row);
return s[col];
}
protected String helper (ResultSet rs, int dataType, int col)
throws SQLException
{
String retVal = null;
Integer intObj; // ask for data depending on the datatype
switch(dataType) {
case Types.DATE:
java.sql.Date date = rs.getDate(col);
retVal = date.toString();
break;
case Types.TIME:
java.sql.Time time = rs.getTime(col);
retVal = time.toString();
break;
case Types.TIMESTAMP:
java.sql.Timestamp timestamp = rs.getTimestamp(col);
retVal = timestamp.toString();
break;
case Types.CHAR:
case Types.VARCHAR:
case Types.LONGVARCHAR:
retVal = rs.getString(col);
break;
case Types.NUMERIC:
case Types.DECIMAL:
java.math.BigDecimal numeric = rs.getBigDecimal(col, 10);
retVal = numeric.toString();
break;
case Types.BIT:
boolean bit = rs.getBoolean(col);
Boolean boolObj = new Boolean(bit);
retVal = boolObj.toString();
break;
case Types.TINYINT:
byte tinyint = rs.getByte(col);
intObj = new Integer(tinyint);
retVal = intObj.toString();
break;
case Types.SMALLINT:
short smallint = rs.getShort(col);
intObj = new Integer(smallint);
retVal = intObj.toString();
break;
case Types.INTEGER:
int integer = rs.getInt(col);
intObj = new Integer(integer);
retVal = intObj.toString();
break;
case Types.BIGINT:
long bigint = rs.getLong(col);
Long longObj = new Long(bigint);
retVal = longObj.toString();
break;
case Types.REAL:
float real = rs.getFloat(col);
Float floatObj = new Float(real);
retVal = floatObj.toString();
break;
case Types.FLOAT:
case Types.DOUBLE:
double longreal = rs.getDouble(col);
Double doubleObj = new Double(longreal);
retVal = doubleObj.toString();
break;
case Types.BINARY:
case Types.VARBINARY:
case Types.LONGVARBINARY:
byte[] binary = rs.getBytes(col);
retVal = new String(binary);
break;
}
return retVal; }
}
先查询结果,然后在FOR循环中进行I++运算,最后把I返回就是记录的个数了。