0

コンポーネントをテーブルにカウントするために使用したい SQL クエリがあります。

private DCDataObj dc;

    public class DCDataObj
    {

        private int datacenter;             //  Datacenters
        ..............

        public DCDataObj(int datacenter............)
        {
            this.datacenter = datacenter;
            ...............
        }

        public int getDatacenter()
        {
            return datacenter;
        }

        public void setDatacenter(int datacenter)
        {
            this.datacenter = datacenter;
        }

        ............
    }

ps = conn.prepareStatement("SELECT COUNT(1) AS CNT FROM COMPONENTSTATS CS, COMPONENTTYPE CT "
        + " WHERE CS.COMPONENTTYPEID = CT.COMPONENTTYPEID AND CT.COMPONENTTYPEID IN ( "
        + " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " //  10
        + " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " //  20
        + " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " //  30
        + " ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) " //  40
        + " GROUP BY CT.NAME ORDER BY CT.NAME");

ps.setInt(1, 1000);
...............

ResultSet result = ps.executeQuery();
            while (result.next())
            {

                dc = new DCDataObj(
                        result.getInt(1),
                        ...............

完全なソース コードは次のとおりです: http://pastebin.com/YMvqBPpV

次のエラー メッセージが表示されます: java.sql.SQLException: Invalid column index

これは設計上の問題ですか、それとも問題は SQL クエリにありますか?

4

1 に答える 1

1

私はあなたの完全なソース コードを見ましたresult.getInt(INDEX)。を行っているだけSELECT COUNT(1)なので、列は 1 つしかないため、値がINDEX1 以外の場合、getInt()は失敗します。

値を取得する列名のカンマ区切りのリストであるSELECT <LIST> ...whereにクエリを変更します。LIST

于 2013-02-26T20:55:04.487 に答える