`
zhenping
  • 浏览: 83301 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

关于JDBC下使用SQLite DB问题总结(Windows下和Linux下使用)

 
阅读更多
关于JDBC下使用SQLite DB问题总结
因为公司的服务器在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)
这种无厘头的异常!!!!!

分享到:
评论

相关推荐

    sqlite-jdbc

    `sqlite-jdbc-3.7.2.jar`是较旧的一个版本,适用于Windows和Linux操作系统。这个版本可能不包含某些新功能或性能优化,但它的优点在于兼容性广泛,适用于那些需要在旧环境中运行的应用程序。 `sqlite-jdbc-3.8.11.2...

    sqlite-jdbc-3.32.3.2.jar-支持信创环境loongarch64、mips64el

    总的来说,sqlite-jdbc-3.32.3.2.jar为信创环境下的Java应用提供了与SQLite数据库交互的能力,解决了在龙芯和MIPS64el架构上的兼容性问题。对于那些需要在这些平台上运行Java应用并利用SQLite存储数据的开发者来说,...

    sqlite-jdbc 驱动包

    SQLite是一款轻量级的、自包含的、无服务器的、零配置的SQL数据库引擎,适用于多种操作系统,包括Windows、Linux、Mac OS X等。SQLite JDBC驱动使得Java应用程序能够通过标准的JDBC接口与SQLite数据库进行交互,从而...

    SQLite JDBC 驱动程序在Java中访问和创建SQLite数据库文件的库完整项目源代码.zip

    我们的SQLiteJDBC库不需要配置,因为主要操作系统的本机库,包括Windows,Mac OS X,Linux等,被组装成一个JAR(Java Archive)文件。用法非常简单;下载我们的 sqlite-jdbc 库,然后将该库(JAR 文件)附加到您的类...

    sqlite3+图形界面+汉化包jar包中文文档JDBC连接sqlite

    SQLite3支持标准的SQL语法,并且具有高度的可移植性,可以在各种操作系统上运行,如Windows、Linux、Mac OS等。 图形界面工具是与SQLite3交互的重要辅助,它允许用户直观地查看、创建和修改数据库内容,而无需编写...

    sqlite-jdbc-3.31.1.zip

    总结来说,sqlite-jdbc-3.31.1.zip是一个适用于Java环境的SQLite JDBC驱动,支持与加密的SQLite数据库交互,兼容Windows、Linux和Mac等多个操作系统。在使用时,需要将驱动加入到项目类路径,通过JDBC API建立连接并...

    linux下 连接sqlite数据库以及mysql的使用方法

    本教程将详细介绍如何在Linux上连接SQLite和MySQL数据库,以及相关的使用方法。 ### SQLite的使用方法 1. **安装SQLite**:在大多数Linux发行版中,SQLite通常已经预装。如果未安装,可以通过包管理器安装,例如在...

    sqlite-jdbc:SQLite JDBC驱动程序

    SQLite JDBC驱动程序 SQLite JDBC是一个用于使用Java访问和创建数据库文件的库。 我们SQLiteJDBC库不需要进行配置,因为主要操作系统(包括Windows,Mac OS X,Linux等)的本机库被组装到一个JAR(Java存档)文件中...

    sqlite的linux的驱动包

    5. **安装和配置**:在Linux系统中,为了使用SQLite JDBC驱动,需要将`sqlitejdbc.jar`添加到类路径(classpath)中,而`libsqlitejdbc.so`则需要确保被系统能够找到,可能需要将其拷贝到系统的`/usr/lib`目录下,...

    sqlite-jdbc-3.8.7亲测可用

    在Java环境中,我们通常使用SQLite JDBC驱动来连接和操作SQLite数据库。 "sqlite-jdbc-3.8.7"是SQLite JDBC驱动的一个特定版本,这个版本已经被验证为可用。SQLite JDBC驱动允许Java应用程序通过JDBC接口与SQLite...

    开发中使用 SQLite 数据库

    5. **跨平台**:SQLite 能够在多个操作系统上运行,包括 Windows、Linux 和 macOS。 #### SQLite 数据库的组件 SQLite 数据库主要由以下几个组件构成: 1. **SQL 编译器**:负责将 SQL 查询转换为虚拟机指令。 2....

    Sqlite3和管理工具

    3. **跨平台**:SQLite3可在多种操作系统上运行,包括Windows、Linux、macOS、Android和iOS等,它提供了广泛的API支持,可以用多种编程语言(如C、Python、Java、PHP等)进行交互。 4. **源代码开放**:SQLite3的源...

    java中使用sqlite数据库

    这个文件包含了操作系统所需的原生代码,确保SQLite-JDBC驱动能在Windows环境下正常工作。 `sqlitejdbc-v037-native.jar`是一个包含本地库的Java Archive (JAR) 文件,它集成了不同平台的本地库。JAR文件中的类加载...

    详解Java使用sqlite 数据库如何生成db文件

    本文将详细介绍 Java 使用 SQLite 数据库生成 DB 文件的实现步骤和相关技术要点。 为什么选择 SQLite SQLite 是一种轻量级的关系数据库管理系统,具有以下优点: * 轻量级: SQLite 库文件小于 500KB,非常适合...

    Sqlite3数据库支持库

    同时,它还有丰富的API和绑定,如Python的sqlite3模块,Java的SQLiteJDBC,JavaScript的sqlite3库等,方便在各种编程环境中使用。 9. 安全性:SQLite3提供加密选项,可以通过第三方扩展库如SQLite Encryption ...

    SQLITE使用教程

    SQLite 支持标准的关系型数据库特性,如 SQL 语言、事务处理等,并且具有高度的可移植性,可以在多种操作系统和硬件平台上运行,包括 Windows、Linux、Mac OS X 以及移动设备如 Android 和 iOS。 2. SQLITE 使用 ...

    SQLite的操作流程

    在桌面系统(如Windows、Linux或macOS)中,你可以直接下载SQLite的动态库或静态库,将其链接到你的项目中。对于编程语言如Python、Java或C#,可以使用对应的SQLite驱动程序库,例如Python的sqlite3模块,Java的...

    sqlite java cpp

    SQLite是一款轻量级的开源数据库管理系统,它支持多种操作系统,包括Windows、Linux、Android等。在Java和C++中与SQLite交互通常涉及到JNI(Java Native Interface),这是一个Java平台标准,允许Java代码调用本地...

Global site tag (gtag.js) - Google Analytics