使用Java将数组数据插入数据库
我对这段代码有问题。我想从平面文件中提取数据并将其存储到数据库中。平面文件格式如下所示:-使用Java将数组数据插入数据库,java,jakarta-ee,Java,Jakarta Ee,我对这段代码有问题。我想从平面文件中提取数据并将其存储到数据库中。平面文件格式如下所示:- DT|00000001|TMDWH|UNIFI|00380520160|MAH SIEW YIN|11 |JALAN PP 2/8|TAMAN PUTRA PRIMA|PUCHONG|SELANGOR|47100|MALAYSIA|801110-14-5498||||||VOBB||A||11|JALAN PP 2/8|||TAMAN PUTRA PRIMA DT|00000002|TMDWH|UNI
DT|00000001|TMDWH|UNIFI|00380520160|MAH SIEW YIN|11 |JALAN PP 2/8|TAMAN PUTRA PRIMA|PUCHONG|SELANGOR|47100|MALAYSIA|801110-14-5498||||||VOBB||A||11|JALAN PP 2/8|||TAMAN PUTRA PRIMA
DT|00000002|TMDWH|UNIFI|00322012091|JUNITA BINTI JAMAL|6 10 KONDOMINIUM FAJARIA|JALAN PANTAI BARU|KUALA LUMPUR|KUALA LUMPUR|WILAYAH PERSEKUTUAN|59200|MALAYSIA|800129-09-5078||||||VOBB||A|||JALAN PANTAI BARU|6|KONDOMINIUM FAJARIA|KUALA LUMPUR
代码:
我真的希望这里的任何人都能帮助我
当前结果:
没有数据存储到数据库中,代码已成功编译
预期结果
所有数据将存储到数据库数据_999中
编制报表的索引以1为基础: 更改
stmt.setString(0,卢旺达问题国际法庭)代码>至stmt.setString(1,卢旺达问题国际法庭)代码>。(并调整以下各项)
请把你得到的例外情况贴出来。这将给我们更多的提示,什么地方可能出了问题
编辑:
表中的所有字段是否都是varchar
类型?您的行中有一些值可能被建模为int
s。SQL API与我能想到的其他java API不同,它是基于一的,这意味着它从一开始计数。您的代码正在尝试设置第0个字段,该字段应该是爆炸的
作为旁注,因为每个字段都有很多特殊处理,所以您可以通过简单地迭代字段并设置stmt参数来用几行代码替换所有代码,即不要为每个字段使用变量:
// fyi, the regex of this split trims automatically
String[] fields = tmp.replace("\""," ").replace("\'","\'\'").trim().split("\\s*\\|\\s*");
// Do any special field processing (most need none)
field[0] = getiCtr(parseMSISDN(field[5])); // for example - just do what you need
// Now set all the SQL params
int col = 0;
for (String field : fields) {
stmt.setString(++col, field); // Note: SQL API is 1-based (not zero-based)
}
为什么要在这里放置javascript标记?您应该在这里发布您得到的异常(而不仅仅是记录消息,而是将整个异常记录在logger.error(s.getMessage())中)亲爱的Mark Brammik,我很抱歉,因为标记javascript..huhu..erm,我没有得到任何异常。日志没有显示任何内容。这是我现在的大问题。这就是为什么我不知道发生了什么,这段代码有什么问题。亲爱的Bohemian,谢谢你的建议,但你能告诉我为什么数据不能存储到数据库中吗?。。这个代码有什么问题?@Siti在我的代码中看到注释://注意:SQL API是基于1的(不是基于零的)
。没有字段0
,它从字段1开始计数亲爱的波希米亚人,谢谢你提供的信息。我有一个问题。如何从每个数组中获取长度。字段[5]。长度?字段[5]
只是一个字符串,所以字段[5].length()
将是它的长度亲爱的波希米亚人,我的长度为0。可能出了问题。我该怎么办?亲爱的黑格,我已经更改了它,但结果仍然是一样的。数据没有存储到数据中。\u 999。我的代码中有错误吗?我真的需要帮助。非常感谢……)你使用什么DBMS?您正在从命令行运行程序吗?也许您可以使用s.printStackTrace(System.out)打印异常代码>?亲爱的Hage,使用logger.info打印StackTrace与我的代码有什么不同?亲爱的Hage,我使用的是Sql plus。我不知道你的记录器
是什么。。。printStackTrace打印完整的堆栈跟踪(即所有方法调用),而不仅仅是异常消息。另外,消息No data store to database,…
是来自SQL Plus还是在代码中的某个地方生成的?
// fyi, the regex of this split trims automatically
String[] fields = tmp.replace("\""," ").replace("\'","\'\'").trim().split("\\s*\\|\\s*");
// Do any special field processing (most need none)
field[0] = getiCtr(parseMSISDN(field[5])); // for example - just do what you need
// Now set all the SQL params
int col = 0;
for (String field : fields) {
stmt.setString(++col, field); // Note: SQL API is 1-based (not zero-based)
}