SQLのCOUNTコマンドを使用して、見つけた値に到達したい。通常、アクセスする列名をgetInt()getString()メソッドに入力します。この場合、特定の列名がない場合はどうすればよいですか。
テーブルのエイリアスに使用されるのと同じ方法で「AS」を使用しましたが、これが機能するかどうかはわかりませんが、そうではないと思います。
Statement stmt3 = con.createStatement();
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count");
while(rs3.next()){
count = rs3.getInt("count");
}
エイリアスを使用する:
SELECT COUNT(*) AS total FROM ..
その後
rs3.getInt("total")
私はこのクエリがあなたのプログラムで動作することを期待しています:
"SELECT COUNT(*) AS count FROM "+lastTempTable+")"
(テーブルではなく列にエイリアスを作成する必要があります)
私はそれをこの方法で行いました(例):
String query="SELECT count(t1.id) from t1, t2 where t1.id=t2.id and t2.email='"[email protected]"'";
int count=0;
try {
ResultSet rs = DatabaseService.statementDataBase().executeQuery(query);
while(rs.next())
count=rs.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
} finally {
//...
}
<%
try{
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bala","bala","bala");
if(con == null) System.out.print("not connected");
Statement st = con.createStatement();
String myStatement = "select count(*) as total from locations";
ResultSet rs = st.executeQuery(myStatement);
int num = 0;
while(rs.next()){
num = (rs.getInt(1));
}
}
catch(Exception e){
System.out.println(e);
}
%>
Statement stmt3 = con.createStatement();
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) AS count FROM "+lastTempTable+" ;");
count = rs3.getInt("count");
上記と似ていますが、次のように試すことができます
public Integer count(String tableName) throws CrateException {
String query = String.format("Select count(*) as size from %s", tableName);
try (Statement s = connection.createStatement()) {
try (ResultSet resultSet = queryExecutor.executeQuery(s, query)) {
Preconditions.checkArgument(resultSet.next(), "Result set is empty");
return resultSet.getInt("size");
}
} catch (SQLException e) {
throw new CrateException(e);
}
}
}