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
注意:db中不存在这个var_1值,所以我必须在文本文件中搜索值并将整行写入csv ..
output.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)
有没有办法可以通过调整代码来避免这种异常。 任何投入都将受到赞赏。
提前致谢
答案 0 :(得分: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个元素(具有索引4
)不存在,因此它将抛出IndexOutOfBoundsException