Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有人能告诉我为什么我的sqlite语句不能工作吗?_Java_Sqlite - Fatal编程技术网

Java 有人能告诉我为什么我的sqlite语句不能工作吗?

Java 有人能告诉我为什么我的sqlite语句不能工作吗?,java,sqlite,Java,Sqlite,我已经用这个SQLite语句尝试了我能想到的一切。我正在尝试运行以下代码 public ArrayList getData(int i) { data = new ArrayList(); try { Statement stat2; stat2 = conn.createStatement(); System.out.println(i); PreparedStatement prep9 = conn.p

我已经用这个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.
我正在查看的数据库如下:

我在程序的这一部分的输出是:

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();

那么它有效吗?不久前我也遇到了同样的问题,结果是数据类型在表中声明为CHAR,而不是NUMERIC等


这可能会导致一些并发症,起初可能并不明显。例如,声明为CHAR的列可能有前导或尾随空格,例如:“1”或“1”,这可能会在数据类型转换期间造成问题。

如果我还可以提供其他内容,请告诉我know@Razvan不我没有指定任何类型,因为我想我之前在这方面遇到了问题,可能是因为嘿,这是工作日的结束,所以我会彻底失败,你能测试一下从查询中删除分号吗?@Joachim Isaksson当然,给我min。编辑:不,相同的东西P.s。在这之后,我有一个捕获,可以返回任何异常,但我没有得到任何错误。我可以添加一点,在SQLite中,默认列关联是数值的,但它将接受任何类型的数据,这可能会导致您描述的不明显类型的问题。将其从数字改为数字可能是值得的INTEGER@James谢谢你的建议,我会在将来记住它,但现在我坚持说,如果它没有坏,就不要修理它,因为它可能会把事情搞砸