JAVA MYSQL准备语句给出空结果集,即使查询在mysql admin中工作

时间:2014-12-04 16:23:47

标签: java mysql database prepared-statement resultset

我知道有很多这样的问题。我整天都被困在这一天。我正在使用从Java到mysql的预准备语句运行查询。它抛出一个异常,因为它返回一个空的结果集,即使我在phpmyadmin上运行相同的查询它返回一些行。 我的代码如下:

public static Integer returnImportLog(String filename,String importLogs,int acc_id){

    int id_out=0;
    ArrayList<Integer> ids = new ArrayList<Integer>();


    try{
        String myUrl = "jdbc:mysql://localhost:3307/blahblah";
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(myUrl,"root","");
        String query2 = "SELECT DISTINCT `id` FROM  `"+importLogs+ "` "
        + "WHERE `file`=? AND `acc_id`= ?";
        PreparedStatement statement=conn.prepareStatement(query2);
        statement.setString(1,filename);
        statement.setInt(2,acc_id);
        //System.out.println();
        ResultSet rs = statement.executeQuery();
            if (rs.next())
                {
                int user_id = rs.getInt("id");
                ids.add(user_id);

                 }
        id_out=(Integer)ids.get(0);
        conn.close();
        statement.close();
        rs.close();

        }
    catch (Exception e)
        {
        System.err.println("Got an exception! ");
        System.err.println(e.getMessage());
        e.printStackTrace();
        }

    return id_out;

它出现以下错误:

  

“有例外!

     
    

索引:0,大小:0     ava.lang.IndexOutOfBoundsException:索引:0,大小:0     t java.util.ArrayList.rangeCheck(未知来源)     at java.util.ArrayList.get(Unknown Source)     在Details.returnImportLog(Details.java:277)“

  

当我运行由预准备语句生成的sql

  

SELECT DISTINCT id FROM pwc_import_logs WHERE   file ='11111Spanners.csv'和acc_id = 1“

关于phpmyadmin MySQL我在行中得到以下结果2个结果。

任何帮助都会非常感激......它破坏了我的头脑,我确信它有些微不足道

2 个答案:

答案 0 :(得分:1)

尝试替换`with'。 我过去在这方面存在一些问题,我想更换它们可以解决问题。 :)

答案 1 :(得分:0)

查询未执行,因此导致空结果集rs。因此,arraylist ids将不会有任何数据。但是,您试图从抛出IndexOutOfBoundsException的arraylist ids.get(0)中读取。你可以尝试删除(反引号)`登录查询字符串然后重试吗?