0

このSQLiteステートメントで考えられることはすべて試しました。実行しようとしている次のコードがあります。

public ArrayList getData(int i)
{
    data = new ArrayList();

    try
    {
        Statement stat2;
        stat2 = conn.createStatement();
        System.out.println(i);
        PreparedStatement prep9 = conn.prepareStatement("SELECT * FROM tbl_INPUT_OBJECTS WHERE cardID = ?;");
        prep9.setInt(1, i);


        ResultSet rs2 = prep9.executeQuery();
        while (rs2.next())
        {
            System.out.println(3);
            IOdevice.get("IOdevice" + (rs2.getInt("id") - (16 * (i - 1)))).setId(rs2.getInt("id") - (16 * (i - 1)));
            IOdevice.get("IOdevice" + (rs2.getInt("id") - (16 * (i - 1)))).setDescription(rs2.getString("description"));

            System.out.println(4);

            System.out.println(rs2.getString("description"));
            System.out.println(rs2.getInt("id") - (16 * (i - 1)));
            System.out.println(IOdevice.get("IOdevice" + (rs2.getInt("id") - (16 * (i - 1)))));
            System.out.println(rs2.getBoolean("state"));
            System.out.println(rs2.getString("type"));
            System.out.println("IOdevice" + (rs2.getInt("id") - (16 * (i - 1))));

            IOdevice.get("IOdevice" + (rs2.getInt("id") - (16 * (i - 1)))).setState(rs2.getBoolean("state"));
            IOdevice.get("IOdevice" + (rs2.getInt("id") - (16 * (i - 1)))).setType(rs2.getString("type"));
        }

        rs2.close();
        stat2.close();

        System.out.println(5);
......etc.

私が見ている私のデータベースはこれです: DB_スクリーンショット

プログラムのこの部分からの私の出力は次のとおりです。

1
5

そのはず:

1
3
4
5

私が間違っていることについて誰かアドバイスをもらえますか?

注:次のコードは機能するため、データベース自体ではありません...(少なくともそうではないと思います。)

Statement stat;
        stat = conn.createStatement();

        ResultSet rs = stat
                .executeQuery("SELECT * from tbl_TEST WHERE cardID = " + i
                        + ";");
        while (rs.next())
        {
            data.add(rs.getInt("id"));
            data.add(rs.getString("lblDescriptionProp"));
            data.add(rs.getString("lblAddressProp"));
            data.add(IOdevice);

            for (int j = 1; j <= 32; j++)
            {
                IOdevice.get("IOdevice" + j).getDescription();
                IOdevice.get("IOdevice" + j).getState();
                IOdevice.get("IOdevice" + j).getType();
            }
        }

        rs.close();
        stat.close();
4

1 に答える 1

2

それで、それは動作しますか?CHAR私は少し前に同じ問題を抱えていましたが、データ型がテーブルのように宣言されていることがわかりました( NUMERICetcではなく)。

これは複雑な問題を引き起こす可能性があり、最初はわかりにくいかもしれません。たとえば、CHAR として宣言された列には先頭または末尾のスペース (例: ' 1' または '1 ') が含まれている可能性があり、これはデータ型変換中に問題を引き起こす可能性があります。

于 2012-08-07T13:18:49.630 に答える