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连接数据库,每次操作时都会去读取数据库,连接数据库,再关闭,中间有很多过程,在操作不多的时候可以这样用,但在数据操作很多时,系统就会很慢,而用了数据库连接池,会将数据库连接放进池中,当我们需要连接数据库时,只会去池中取,因此只会创建一次数据库连接,大大提高了程序的性能,占用内存也变小。

 

posted @ 2018-01-19 11:29  夏文杰  阅读(1352)  评论(0)    收藏  举报