关于JDBC下使用SQLite DB问题总结(Windows下和Linux下使用)
2014-04-25 18:03
302 查看
关于JDBC下使用SQLite DB问题总结
因为公司的服务器在Linux下,同时也需要在Windows下运行,所以这方面的工作必须做的仔细。以下几点收获可以给大伙分享,避免因为一些低级错误影响项目开发。
在Windows下SQLite JDBC 路径必须是小写,并且路径中需要添加/
在Linux下SQLite JBDC路径严格区分大小写,并且路径中不需要添加/
所以在使用过程一定要注意:以下几行代码就是判断这个环境的:
java.sql.SQLException: out of memory
at org.sqlite.DB.throwex(DB.java:252)
at org.sqlite.NestedDB.open(NestedDB.java:47)
at org.sqlite.Conn.<init>(Conn.java:36)
at org.sqlite.JDBC.connect(JDBC.java:38)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
这种无厘头的异常!!!!!
因为公司的服务器在Linux下,同时也需要在Windows下运行,所以这方面的工作必须做的仔细。以下几点收获可以给大伙分享,避免因为一些低级错误影响项目开发。
在Windows下SQLite JDBC 路径必须是小写,并且路径中需要添加/
在Linux下SQLite JBDC路径严格区分大小写,并且路径中不需要添加/
所以在使用过程一定要注意:以下几行代码就是判断这个环境的:
public synchronized List getPetternList(String pattern) throws Exception{ log.info("getPetternList DB="+pattern); String path = MLotteryContext.getInstance().get("pettern.dir"); File pathDir = new File(path); if(!pathDir.exists()) pathDir.mkdirs(); log.info("pathDir = "+pathDir); String petternPath = path+"pattern.db"; File newFile = new File(petternPath); log.info("==========start delete Old Pettern DB=========="); deleteFile(newFile); log.info("==========End delete Old Pettern DB=========="); log.info("======Start =======Write Pettern DB==============="); //------------------------ // if (!newFile.exists()) { // newFile.createNewFile(); // } // log.info("=============setExecutable==============="); // newFile.setExecutable(true); // log.info("=============setReadable================="); // newFile.setReadable(true); // log.info("=============setWritable================="); // newFile.setWritable(true); // InputStream inStream = new FileInputStream(pattern); // FileOutputStream fs = new FileOutputStream(newFile); // byte[] buffer = new byte[1444]; // int bytesum = 0; // int byteread = 0; // while ((byteread = inStream.read(buffer)) != -1) { // bytesum += byteread; // log.info("=============bytesum===="+bytesum); // // System.out.println(bytesum); // fs.write(buffer, 0, byteread); // } // inStream.close(); // log.info("======End =======Write Pettern DB==============="); File oldFile = new File(pattern); boolean bool = oldFile.renameTo(newFile); log.info("Current PetternDB:"+newFile.getPath()+" bool = " + bool); Class.forName("org.sqlite.JDBC"); log.info("DB="+petternPath); log.info("====Start get Server System Type =========="); Properties props=System.getProperties(); //获得系统属性集 String osName = props.getProperty("os.name"); //操作系统名称 log.info("Current OS Type :"+osName); log.info("====End get Server System Type =========="); osName = osName.toLowerCase(); int index = 0; index = osName.indexOf("windows"); String JDBC = "jdbc:sqlite:"+petternPath; if(index > -1){ petternPath = petternPath.toLowerCase(); JDBC="jdbc:sqlite:/"+petternPath; } log.info("path = "+petternPath); log.info("JDBC: "+JDBC); Connection conn = DriverManager.getConnection(JDBC); log.info("getPetternList conn="+conn.toString()); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery("select * from pattern"); List<String> list = null; if(rs != null){ list = new ArrayList<String>(); } while (rs.next()) { String pid = rs.getString("pattern_id"); log.info("pattern_id = "+pid); list.add(pid); } rs.close(); conn.close(); deleteFile(newFile); return list; }只有这样做才能避免老是出现:
java.sql.SQLException: out of memory
at org.sqlite.DB.throwex(DB.java:252)
at org.sqlite.NestedDB.open(NestedDB.java:47)
at org.sqlite.Conn.<init>(Conn.java:36)
at org.sqlite.JDBC.connect(JDBC.java:38)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
这种无厘头的异常!!!!!
相关文章推荐
- 关于windows下使用putty+Xming远程访问linux程序的中文输入问题
- 关于在Linux环境下使用CUnit的遇到的问题总结
- 关于在neoshine linux下使用电视卡遇到的问题和总结
- 关于Jenkins使用Gradle对android项目打包遇到的问题总结
- 嵌入式开发基础--关于Linux与windows的共享问题解决方法二的补充
- 关于linux上使用vi时,方向键出现ABCD的个人总结
- 关于linux下使用phpmyadmin给mysql表关联外键的问题和解决办法
- 关于DAO实现类继承JdbcDaoSupport类后,使用注解无法注入DataSource的问题
- Windows下Apache使用问题总结(持续更新)
- Linux(使用了Ubuntu)和windows传输和共享文件的方法总结
- linux卸载,安装win7碰到的问题总结,使用MbrFix.exe修复mbr
- 关于Linux和Windows双系统共存时间问题
- 关于linux中DBG宏定义的使用总结
- 1Mybatis入门--1.1单独使用jdbc编程问题总结
- 关于Xmanager使用问题的总结
- 关于spring boot整合mybatis使用oracle数据库出现could not load:oracle.jdbc.driver.OracleDriver问题的终极解决方案
- 有关linux与windows中文件名的编码问题总结
- 【ORACLE JDBC】Oracle中使用JDBC对CLOB操作,传说中关于666限制问题
- 在Linux中Oracle安装成功后,首次启动使用时,会出现的一些问题总结和解决办法
- 关于echarts使用的常见问题总结