用java计算excel数据库_用Java编写Excel数据到数据库

这是我用来将excel文件数据写入数据库的方法。

public static void executeSQLUpdate(String sql, List arguments) {

Connection con = null;

PreparedStatement pstmt = null;

try {

con = getConnection(); //a method that returns a java.sql.Connection to your database

System.out.println("

01)conection :"+con);

pstmt =  con.prepareStatement(sql);

System.out.println("

02)pstn :"+pstmt);

System.out.println("

03)arguments size :"+arguments.size());

if (arguments != null) {

int i = 1;

System.out.println("

04)if :"+arguments);

for(Object o : arguments) {

System.out.println("

05)executeSQLUpdate");

System.out.println("

06)object."+o);

System.out.println("

07)................... :"+i + o);

pstmt.setObject(i, o);

System.out.println("

08)____________________"+i+o);

}

}

System.out.print("

09)errorchk........... :");

//method to execute insert, update, delete statements...

pstmt.executeUpdate();

System.out.print("

10)+++++++++++++++++ :");

} catch(SQLException e) {

System.out.println("

11)************* :"+e);

//handle the error...

} finally {

//closing the resources (always in finally block, not in the try!)

try {

if (pstmt != null) {

pstmt.close();

}

if (con != null) {

con.close();

}

} catch (SQLException e) {

}

}

}

最终没有07所有系统都正常工作。但在那之后,任何系统都无法运行。这是什么原因?这个有错误吗?

这是我的出局:

run:

AAA     BBB     CCC

DDD     EEE     FFF

GGG     HHH     III

JJJ     KKK     LLL

MMM     NNN     OOO

PPP     QQQ     RRR

01)连接:com.mysql.jdbc.JDBC4Connection@6e70c7

02)pstn:com.mysql.jdbc.JDBC4PreparedStatement@29428e:INSERT INTO files_1 VALUES(**未指定,未指明,未指明**)

03)参数大小:6

04)如果:[[AAA,BBB,CCC],[DDD,EEE,FFF],[GGG,HHH,III],[JJJ,KKK,LLL],[MMM,NNN,OOO],[PPP,QQQ, RRR]

05)executeSQLUpdate:

06)对象:[AAA,BBB,CCC]

07)...................:1 [AAA,BBB,CCC]

08)__________:1 [AAA,BBB,CCC]

05)executeSQLUpdate:

06)对象:[DDD,EEE,FFF]

07)...................:1 [DDD,EEE,FFF]

08)__________:1 [DDD,EEE,FFF]

05)executeSQLUpdate:

06)对象:[GGG,HHH,III]

07)...................:1 [GGG,HHH,III]

08)__________:1 [GGG,HHH,III]

05)executeSQLUpdate:

06)对象:[JJJ,KKK,LLL]

07)...................:1 [JJJ,KKK,LLL]

08)__________:1 [JJJ,KKK,LLL]

05)executeSQLUpdate:

06)对象:[MMM,NNN,OOO]

07)...................:1 [MMM,NNN,OOO]

08)__________:1 [MMM,NNN,OOO]

05)executeSQLUpdate:

06)对象:[PPP,QQQ,RRR]

07)...................:1 [PPP,QQQ,RRR]

08)__________:1 [PPP,QQQ,RRR]

09)errorchk ...........:

11)*****:没有为参数2指定值

java.sql.SQLException: No value specified for parameter 2

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)

at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2560)

at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2536)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2383)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2327)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2312)

at com.project.bulk.ReadExcelFile.executeSQLUpdate(ReadExcelFile.java:112)

at com.project.bulk.ReadExcelFile.MethodToData(ReadExcelFile.java:138)

at com.project.bulk.ReadExcelFile.main(ReadExcelFile.java:39)

建立成功(总时间:3秒)

不工作既不是有效的Java错误也不是有效的Excel错误。

除了我发现的错误之外,我还建议看一下输出是什么,因为我几乎可以肯定某种情况会被写入某处。 请通过编辑把它放在你的问题中!

我发布了我的输出。

我发布了我现在的输出。我做的错误是什么。??

作为一般性评论:请阅读有关JDBC和SQL的一般信息。 看起来你对这些技术缺乏一般性的了解。 找一个有效的例子,然后从那里开始。 对我来说,看起来整个for循环都是错误的。 基于INPUT语句和参数列表,看起来每个参数需要一个INSERT(每个参数有三个值)。 你现在这样做的方式永远不会奏效。

一个错误肯定是你增加i两次!

System.out.println("

07)..................."+i++ + o); // one

pstmt.setObject(i++, o); // two

这意味着你不设置偶数索引,只是奇数索引:1,3,5 ...

这应该纠正这个错误:

System.out.println("

07)..................."+i + o);

pstmt.setObject(i++, o); // only once, and after the evaluation!

编辑

*第二,但也是大错误*

} catch(SQLException e) {

System.out.println("

11)************* :"+e); //WTF?

//handle the error...

}

请原谅我,现在必须发生这种情况! sub>

对于我们和您(未来)同事的心理健康,请不要再这样做了!

打印例外必须以两种方式之一发生:

logger.error("message",e);

e.printStackTrace();

因为这些保留了堆栈跟踪,从而能够正确调试代码

但永远不应该永远!发生在以下任何一种方式:

是System.out.print(E)

是System.out.print(e.getMessage)

System.out.print("message"+ e.getMessage)

logger.error(e.getMessage)

所以这应该是正确的:

} catch(SQLException e) {

System.out.println("

11)************* :"+e.getMessage());

e.printStackTrace();

//TODO: handle the error...

}

顺便说一句:使用像log4j这样的正确日志非常值得花时间!清理所有System.out。*需要花费更多的时间,而不是设置正确的loglevel ...

EDIT2

至于SQL错误:

String sql ="INSERT INTO files_1 VALUES(?)";

此SQL行告诉DBMS它将有一个参数要处理。该表有3列,因此您需要指定3个值。常量或参数(使用?)。所以你应该:

String sql ="INSERT INTO files_1 VALUES(?,?,?)";

我纠正了这个错误。但同样的问题就在那里。

你修复了异常记录吗?完成后,您应该报告输出的内容。

我修复后发帖。

我不知怎的错过了。但是,看到这个,@ nwinkler发布的答案就是你所需要的!我不知道列表中存在哪些实例,您应该从中提取"基本类型"。

是的。我解决了这个问题。非常感谢。但之后又出现了另一个错误。请检查一下。我编辑了我的问题。

我发布了我现在的输出。我做的错误是什么。??

如您的错误所示

您正尝试使用此行中不可序列化的参数设置值:

pstmt.setObject(i++, o);

请确保所有值都是基本值或可以映射到数据库列的值,如String或Date。

您可以通过输入这样的行来找出您尝试设置的数据(使用日志框架或System.out.println:

System.out.println("setObject:" + o +", Class:" + o.getClass());

是的。我解决了这个问题。非常感谢。但之后又出现了另一个错误。请检查一下。我编辑了我的问题。

看起来您的SQL与表结构不匹配。如果不了解有关表或SQL的更多信息,就无法回答这个问题。请看这里类似的错误:stackoverflow.com/questions/5304613/

我的sql是String sql ="INSERT INTO files_1 VALUES(?)";在我的表中有3列。我应该改变什么?

@ user1705260你应该做到:String sql ="INSERT INTO files_1 VALUES(?,?,?)"; ?的数量应与你使用的参数相对应。

我做到了。但是它给出了这个错误now.com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'?,?,?)'附近使用正确的语法

如何在插入查询中输入参数。

我发布了我现在的输出。我做的错误是什么。??

你没有递增i。正如您在调试语句07中看到的那样,您始终使用索引1设置值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值