对SQLite数据库操作 操作db文件

  sqlite数据库就是一个DB文件。  程序每操作一次数据库都要读一次 .DB  文件 。  这个文件就是这个SQLite数据库。

  如果需要依赖包的可以联系我

工具类:

package com.hotent.code.util.eayun;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;


/**
 * 对sqlite操作 
 *           所需支持依赖     sqlite-jdbc-3.8.11.1.jar
 * @author sunzhenyang on 2019-04-18
 * 
 * 
 * 注:以下所有方法不能抛异常只能捕获  不然会报错
 */
public class SqliteJDBCUtil {

    private static String dbFilePath="";
    
    public static String getDbFilePath() {
        return dbFilePath;
    }


    /**
     * 生成一个DB文件  (创建连接)    
     * @param filePath 生成文件夹的路径  如:F:/fileTest/aabb.db
     * @return 当前DB文件的连接通道
     */
    public static Connection createRssDBFile(String filePath) {
        SqliteJDBCUtil.dbFilePath = filePath; 
        Connection con=null;    
        
        try {
            Class.forName("org.sqlite.JDBC");
            //创建了一个sqlite的  .db文件
            con = DriverManager.getConnection("jdbc:sqlite:"+filePath); 
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }   
        
        return con;
    }
    
    
    /**
     * 创建表
     * @param con                  某一个DB文件的连接 
     * @param createTableSql      创建表的语句 
     * @param tableName          表名  建表时判断表是否存在 存在即删除表 (可以不传)
     * @throws SQLException  
     */
    public static void createTable(Connection con,String createTableSql,String tableName){
        try {
            Statement stat = con.createStatement();
            if(tableName != null && !"".equals(tableName)){
                stat.executeUpdate("drop table if exists "+tableName+";");
            }
            //创建表
            stat.executeUpdate(createTableSql); 
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } 
    
    /**
     * 执行SQL 外部调用是直接设置SQL语句 以及参数 传入后直接执行
     * @throws SQLException 
     */
    public static void editSql(PreparedStatement prep,Connection con){
        //执行处理
        try {
            prep.addBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }     
    }
    
    /**
     * 执行SQL
     * @throws SQLException 
     */
    public static PreparedStatement editSql(Connection con){
        PreparedStatement prep=null;
        //向rssType表中插入数据
        try {
            prep = con.prepareStatement("insert into tableTest values (?, ?, ?, ?);");
            prep.setInt(1,1);
            prep.setString(2,"qqq");
            prep.setInt(3,2);
            prep.setString(4,"11123");
            
            prep.addBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return prep;
    }
    
    /**
     * 提交SQL语句
     * @param con
     * @param prep
     * @throws SQLException
     */
    public static void submitSql(Connection con,PreparedStatement prep){
        /**
         *  默认的话为自动提交, 每执行一个update ,delete或者insert的时候都会自动提交到数据库,无法回滚事务。 
         *  设置connection.setautocommit(false);
         *  只有程序调用connection.commit()的时候才会将先前执行的语句一起提交到数据库,这样就实现了数据库的事务。
         *  还有一点是因为sqllite数据库是一个 .db的文件  没执行一次语句都要打开一次文件  所以加入事务将全部SQL放于缓存中一次性执行  只需要打开一次文件
         */
        try {
            con.setAutoCommit(false);
            prep.executeBatch(); //批量执行 
            con.setAutoCommit(true);
        } catch (SQLException e) {
            e.printStackTrace();
        }    
    }
    
    /**
     * 使用完一定要关闭连接    ***** 务必  切记   *****
     * @param prep
     * @param con
     */
    public static void close(PreparedStatement prep,Connection con){
        try {
            if(prep!=null)
                prep.close();

            if(con!=null)
                con.close();
         
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    public static void main(String[] args) throws Exception {
        Connection con  = SqliteJDBCUtil.createRssDBFile("F:/fileTest/demo.db");  //1,创建一个DB文件
        
        StringBuffer createTableSql=new StringBuffer("create table tableTest (");
        createTableSql.append("id INTEGER, name NTEXT,");
        createTableSql.append("typeId INTEGER, logoUrl text");
        createTableSql.append(");");
        SqliteJDBCUtil.createTable(con, createTableSql.toString(), "tableTest");  //2,创建一个表
        
        PreparedStatement  prep = SqliteJDBCUtil.editSql(con);   //3, 向表中插入SQL
        
        SqliteJDBCUtil.submitSql(con, prep); //提交
        
        SqliteJDBCUtil.close(prep, con);

        
    }
    
    
    
}

 

转载于:https://www.cnblogs.com/sunhaoyu/p/10731470.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值