jdbc 操作sqlite
最近项目中遇到操作sqlite数据库,给了我一个.db文件,要求直接连接该数据库进行数据操作。
添加maven依赖:
<!-- sqlite-jdbc-->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
sqlUtil:
package com.chwl.medical.dao.impl.util; import com.mchange.v2.c3p0.ComboPooledDataSource; import org.apache.log4j.Logger; import javax.annotation.Resource; import javax.sql.DataSource; import java.beans.PropertyVetoException; import java.net.URL; import java.sql.*; public class OpSqliteDB { private Logger logger = Logger.getLogger(this.getClass());
//数据库连接池 private static ComboPooledDataSource source ; private ComboPooledDataSource cpds; private static final String Class_Name = "org.sqlite.JDBC";
//读取drug.db文件的路径 private static final String DB_URL = "jdbc:sqlite:" + getFilePath("drug.db"); private static Connection connection; //设置数据库连接池参数,将数据库连接放入连接池中 static{ try { source = new ComboPooledDataSource(); source.setDriverClass(Class_Name); source.setJdbcUrl(DB_URL); source.setInitialPoolSize(10); source.setMaxPoolSize(20); source.setMinPoolSize(5); source.setAcquireIncrement(1); source.setIdleConnectionTestPeriod(60); source.setMaxIdleTime(3000); source.setTestConnectionOnCheckout(true); source.setTestConnectionOnCheckin(true); source.setAcquireRetryAttempts(30); source.setAcquireRetryDelay(1000); source.setBreakAfterAcquireFailure(true); } catch (PropertyVetoException e) { e.printStackTrace(); } } //获取数据库路径 private static String getFilePath(String fileName) { ClassLoader classLoader = OpSqliteDB.class.getClassLoader(); URL url = classLoader.getResource(fileName); return url.getFile(); } /** * 获取数据库连接 * * @return 数据库连接 */ public synchronized Connection getConnection() throws SQLException { connection = source.getConnection(); return connection; } //关闭操作 public static void closeConnection(Connection con){ if(con!=null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void closeResultSet(ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static ResultSet func1(Connection connection, String sql) throws SQLException { Statement statement = connection.createStatement(); statement.setQueryTimeout(30); // set timeout to 30 sec. // 执行查询语句 ResultSet rs = statement.executeQuery(sql); return rs; } }
加入数据库连接池的好处:传统意义上的jdbc连接数据库,每次操作时都会去读取数据库,连接数据库,再关闭,中间有很多过程,在操作不多的时候可以这样用,但在数据操作很多时,系统就会很慢,而用了数据库连接池,会将数据库连接放进池中,当我们需要连接数据库时,只会去池中取,因此只会创建一次数据库连接,大大提高了程序的性能,占用内存也变小。

浙公网安备 33010602011771号