1
我试图插入JSON数据,它是从Jackson使用POJO解析的Rest API检索的。 我在基于下面的代码行插入记录时收到空指针异常preparedStatement = dbConnection.prepareStatement(insertTableSQL);插入多个从JSON中检索到的记录使用JDBC中的POJO进行解析
请提出我在做什么错在这里?
Connection dbConnection = null;
PreparedStatement preparedStatement = null;
String insertTableSQL = "INSERT INTO Test_Batch"
+ "((Account_ID, BestPractice_Source, Check_ID, Importance,Category,Last_BestPractices_Checked_Date,Last_BestPractices_Updated_Date)) VALUES" + "(?,?,?,?,?,?,?)";
try {
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
dbConnection.setAutoCommit(false);
ObjectMapper mapper=new ObjectMapper();
JsonNode root =mapper.readTree(new RestClient().Json());
ArrayNode BestPracticeChecks=(ArrayNode)root.path("BestPracticeChecks");
Iterator<JsonNode> iterator =BestPracticeChecks.elements();
BestPracticeChecks bestPracticeChecksid =null;
while (iterator.hasNext()) {
bestPracticeChecksid = mapper.readValue(iterator.next().traverse(), BestPracticeChecks.class);
preparedStatement.setInt(1, Account_ID);
preparedStatement.setString(2, "xyz");
preparedStatement.setInt(3, bestPracticeChecksid.getCheckId());
preparedStatement.setString(4, bestPracticeChecksid.getImportance());
preparedStatement.setString(5, bestPracticeChecksid.getCategory());
preparedStatement.setTimestamp(6, getCurrentTimeStamp());
preparedStatement.setString(7, readDateofResults());
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
dbConnection.commit();
错误日志如下:
Exception in thread "main" java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:586)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:524)
at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:3551)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:197)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:442)
at com.mysql.jdbc.ServerPreparedStatement.asSql(ServerPreparedStatement.java:347)
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:524)
at com.mysql.jdbc.ServerPreparedStatement.toString(ServerPreparedStatement.java:2327)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuffer.append(Unknown Source)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:197)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:423)
at com.mysql.jdbc.ServerPreparedStatement.<init>(ServerPreparedStatement.java:280)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4363)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4301)
at com.tutorialspoint.JDBCBatchUpdateExample.batchInsertRecordsIntoTable(JDBCBatchUpdateExample.java:49)
at com.tutorialspoint.JDBCBatchUpdateExample.main(JDBCBatchUpdateExample.java:29)
'conn' is'null'?您需要初始化连接对象。另外,请不要吞下异常,并确保至少记录它们。这将使解决问题更容易。 –
Thankyou的回复,它只是一个代码片段,在上面显示的代码之前,我已经初始化了conn,通过 Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(DB_URL,USER,PASS); –
是否有任何其他方式可以使用JDBC在数据库中插入JSON值(使用Pojo进行映射)? –