-1
try {
    rs = stmt.executeQuery("select firstname, middlename, lastname from users where  username = '" + var_1 + "'");
    if (rs == null || (!rs.next())) {
        record = var_1;
        FileInputStream file = new FileInputStream("C:/workspace/table_export.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(file));
        String line = null;
        while ((line = br.readLine()) != null) {
            String[] tokens = line.split("\\s+");
            if (tokens[0].equals(record)) {
                int size = tokens.length;
                for (int i = 0; i <= size; i++) {
                    fw.append(tokens[i]);
                    fw.append(',');
                }
                fw.append('\n');
            }
        }
    }
}

大家好,

我正在尝试使用从文本文件中检索到的过滤器值来查询数据库。

如果结果集返回空,我将在同一文本文件中搜索该过滤器值,并通过拆分空间将包含这些值的整行复制到数组中。

然后我将数组写入 csv 文件。

我的文本文件有这样的值

yzr200123 xxxx yyyy  
dd4534554 xydy frde

var_1=yzr200123, dd4534554

注意:这个 var_1 值在 db 中不存在,所以我必须在文本文件中搜索值并将整行写入 csv..

输出.csv

yzr200123,xxxx,yyyy

dd4534554,xydy,frde

正如人们可以看到它写入 csv 文件,但我得到以下异常,

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at simplejdbc.SimpleJDBC.getstaffid(SimpleJDBC.java:119)
at simplejdbc.SimpleJDBC.main(SimpleJDBC.java:64)

有没有办法通过调整代码来避免这个异常。任何输入将不胜感激。

提前致谢

4

1 回答 1

4
for(int i=0;i<=size;i++)

是错的。由于数组索引从 开始0,因此您必须循环直到i<size

for(int i=0;i < size;i++) {
    fw.append(tokens[i]);
    fw.append(',');
}

假设数组长度为4. 索引是从 0 开始的,所以可用的索引是0, 1, 2, 3. 使用您的循环,您正在尝试访问索引0, 1, 2, 3, 4。第 5 个元素(具有 index 4)不存在,所以它会抛出一个IndexOutOfBoundsException

于 2013-09-18T09:36:52.673 回答