不能在java的sqlite数据库中插入超过254的数据【JAVA教程】

!
也想出现在这里? 联系我们
信息

不能在java的sqlite数据库中插入超过254的数据,第1张

概述不能在java的sqlite数据库中插入超过254的数据

我正在使用一个java类,它允许我从string中插入数据到sqlite数据库。 我通过循环插入数据。 我的string有260个数据。 当我尝试插入这些数据从string到sqlite数据库它工作正常,但停在每次254的位置! 为什么?

for(i = 0; i < 260; i++) { try { Class.forname(\”org.sqlite.JDBC\”); connection = DriverManager.getConnection(\”jdbc:sqlite:D:\\new.db\”); java.sql.Statement statement = connection.createStatement(); statement .executeUpdate(\”INSERT INTO suggestion (suggesting) VALUES(\’\”+words[i]+\”\’)\”); System.out.println(i + \” – \” + words[i]); } catch (ClassNotFoundException ex) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,null,ex); } }

这里是netbeans的错误日志!

Exception in thread \”main\” java.lang.NullPointerException at org.sqlite.nestedDB$CausedsqlException.fillinStackTrace(nestedDB.java:442) at java.lang.Throwable.<init>(Throwable.java:250) at java.lang.Exception.<init>(Exception.java:54) at java.sql.sqlException.<init>(sqlException.java:140) at org.sqlite.nestedDB$CausedsqlException.<init>(nestedDB.java:435) at org.sqlite.nestedDB._open(nestedDB.java:63) at org.sqlite.DB.open(DB.java:77) at org.sqlite.Conn.<init>(Conn.java:88) at org.sqlite.JDBC.connect(JDBC.java:64) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:233) at test.Word.main(Word.java:106) Java Result: 1

在tomcat中部署exception:找不到 *** 作isServiced

Java全屏模式不能在Ubuntu上工作

如何通过apache VFS使用JCIFS访问SMB URL?

将单个JAR文件正确打包为RPM

在windows中执行预定任务时如何隐藏svchost.exe(dos提示符)

如果尚未启动,则使用Bat文件启动Java应用程序

使用7zip解压缩特定文件夹的命令

Java的tesseract错误在linux中“无法加载库\’tesseract\’:libtesseract.so”

Apache AXIS在parsing时忽略/跳过其他元素

在windows 7上运行Bash(.sh)

您可能已经没有连接,因为在打开新文件之前,您没有按要求关闭它们。 用尽连接不应该抛出NullPointerException ; 这似乎是在sqlite中的错误。

更好更快的方法是:不要关闭连接,但不要每次都打开一个新的连接 。

你可以这样做:

try { Class.forname(\”org.sqlite.JDBC\”); } catch (ClassNotFoundException ex) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,ex); } connection = DriverManager.getConnection(\”jdbc:sqlite:D:\\new.db\”); for(i = 0; i < 260; i++) { java.sql.Statement statement = connection.createStatement(); try { statement.executeUpdate(\”INSERT INTO suggestion (suggesting) VALUES(\’\”+words[i]+\”\’)\”); } finally { // Statements,like connections,also need to be closed after use statement.close(); } System.out.println(i + \” – \” + words[i]); }

这是一个重新分解和更新,可能有帮助。

我假设sqlite驱动程序不喜欢在使用它们之后不关闭连接的事实(实际的NullPointer可能是您正在使用的库中的一个错误)。

我还添加了使用PreparedStatement (这对于sql注入攻击来说效率更高,风险更小)以及正确关闭资源(当然,在Java 7试用资源之前)。

Connection connection = null; PreparedStatement insert = null; try { Class.forname(\”org.sqlite.JDBC\”); connection = DriverManager.getConnection(\”jdbc:sqlite:D:\\new.db\”); insert = connection.prepareStatement(\”INSERT INTO suggestion (suggesting) VALUES(?)\”); for (String word : words) { insert.setString(1,word); System.out.println(\”Word \”+word+\” inserted\”); } } catch (ClassNotFoundException ex) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,\”Driver not found\”,ex); } catch (sqlException sqle) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,\”Could not execute sql\”,sqle); } finally { if (insert != null) { try { insert.close(); } catch (sqlException sqle) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,\”Could not close prepared statement\”,sqle); } insert = null; } if (connection != null) { try { connection.close(); } catch (sqlException sqle) { Logger.getLogger(Word.class.getname()).log(Level.SEVERE,\”Could not close connection\”,sqle); } connection = null; } }

希望这可以帮助。

总结

以上是内存溢出为你收集整理的不能在java的sqlite数据库中插入超过254的数据全部内容,希望文章能够帮你解决不能在java的sqlite数据库中插入超过254的数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞175 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容