SQLite(五) - Java数据库连接(JDBC)

首先下载sqlite-jdbc.jar 包,接着把jar包导入项目中,我这里是使用Android Studio开发工具,将jar包放在了libs目录下
在这里插入图片描述
build.gradle中添加依赖

 implementation files('libs/sqlite-jdbc-3.23.1.jar')

使用Java连接数据库,有三个基本步骤

  1. 加载数据库驱动
  2. 建立数据库连接
  3. 创建SQL执行对象Statement

代码实现:

public class JDBCHelper {

    private static final String TAG = "JDBCHelper";

    private volatile static JDBCHelper sJDBCHelper;

    //数据库的路径
    private static final String DB_URL = "jdbc:sqlite://d:/sqlite/userDB.db";

    //驱动类的完全限定名
    private static final String DRIVE_NAME = "org.sqlite.JDBC";
    //数据库连接对象
    private Connection mConnection;
    //创建Statement对象,执行SQL语句
    private Statement mStatement;

    private JDBCHelper() {
        //连接数据库三部曲
        try {
            //1、加载数据库驱动
            Class.forName(DRIVE_NAME);
            //2、建立数据库连接
            getConnection();
            //3、创建SQL执行对象Statement
            createStatement();
        } catch (Exception e) {
            Logger.getLogger(TAG).info(e.getMessage());
            e.printStackTrace();
        }
    }


    public static JDBCHelper getInstance() {
        if (sJDBCHelper == null) {
            synchronized (JDBCHelper.class) {
                if (sJDBCHelper == null) {
                    sJDBCHelper = new JDBCHelper();
                }
            }
        }
        return sJDBCHelper;
    }


    private Connection getConnection() {
        try {
            if (mConnection == null) {
                mConnection = DriverManager.getConnection(DB_URL);
            }
        } catch (SQLException e) {
            Logger.getLogger(TAG).info("数据库连接失败" + e.getMessage());
            e.printStackTrace();
        }
        Logger.getLogger(TAG).info("数据库连接成功");
        return mConnection;
    }


    private void createStatement(){
        try {
            if (mStatement==null){
                mStatement = getConnection().createStatement();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }


    /**
     * 创建表
     * @param sql sql语句
     */
    public void create(String sql) {
        try {
            mStatement.execute(sql);
            close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 添加数据,可连续插入多条数据
     * @param sql sql语句
     */
    public void  insert(String... sql){
            try {
                for (int i = 0; i < sql.length; i++) {
                    mStatement.executeUpdate(sql[i]);
                }
                close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

    }


    /**
     * 删除数据
     * @param sql sql语句
     */
    public void delete(String sql){
        try {
            mStatement.executeUpdate(sql);
            close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    /**
     * 修改数据
     * @param sql sql语句
     */
    public void update(String sql){
        try {
            mStatement.executeUpdate(sql);
            close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void query(String sql){
        try {
            //获取查询的结果集
            ResultSet resultSet = mStatement.executeQuery(sql);
            //结果集的元数据
            ResultSetMetaData rsmd = resultSet.getMetaData();
            //获取表的列数
            int columnCount = rsmd.getColumnCount();
            List<String> list = new ArrayList<>();
            while (resultSet.next()){
                String itemMsg="";
                for (int i = 1; i <= columnCount; i++) {
                    //表的列标签
                    String columnName = rsmd.getColumnName(i);
                    //表的行值
                    Object object = resultSet.getObject(columnName);

                    itemMsg += columnName+": "+object+"\n";

                }
                list.add(itemMsg);
            }

            //输出
            Logger.getLogger(TAG).info(list.toString());

            resultSet.close();
            close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    /**
     * 关闭资源
     */
    private void close() {

        try {
            if (mStatement!=null){
                mStatement.close();
            }

            if (mConnection!=null){
                mConnection.close();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

    }


}

具体调用:

public class JDBCDemo {

    public static void main(String[] args) {

        // 创建表
//        JDBCHelper.getInstance().create("create table msg(" +
//                "id integer primary key autoincrement not null," +
//                "username text not null," +
//                "msgText text not null)" );

        //添加数据
//        JDBCHelper.getInstance().insert("insert into msg(username,msgText) values('张三','今天的天气很好,出去玩吗')",
//                "insert into msg(username,msgText) values('李四','不行啊,代码还没搬完')",
//                "insert into msg(username,msgText) values('张三','要搞多久')",
//                "insert into msg(username,msgText) values('李四','两个小时吧')",
//                "insert into msg(username,msgText) values('张三','嗯,那我等你')");

        //修改数据
//        JDBCHelper.getInstance().update("update msg set msgText='不等你了,我先走了' where id=5");

        //删除数据
//        JDBCHelper.getInstance().delete("delete from msg where id=5");


        //查询
        JDBCHelper.getInstance().query("select * from msg");


    }

   
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqlite-jdbc-3.36是一个用于Java编程语言的JDBC驱动程序,用于连接和操作SQLite数据库SQLite是一种轻量级的嵌入式数据库引擎,没有独立的服务器进程,它将整个数据库作为一个文件存储在主机文件系统中。 sqlite-jdbc-3.36提供了用于连接SQLite数据库的API和工具,使得开发者可以使用Java语言轻松地在应用程序中操作SQLite数据库。它提供了各种功能,如连接数据库、创建和执行SQL语句、事务管理、批处理操作等。 使用sqlite-jdbc-3.36,可以通过以下步骤在Java应用程序中连接和操作SQLite数据库: 1. 下载并导入sqlite-jdbc-3.36的JAR文件到项目中。 2. 加载驱动程序类,这样可以将其注册到JavaJDBC驱动管理器中。 3. 使用JDBC连接字符串指定要连接SQLite数据库文件路径,并使用驱动程序的getConnection()方法获得一个连接对象。 4. 通过连接对象创建一个语句对象,并使用该对象执行SQL查询或更新语句。 5. 处理和检索结果,可以使用语句对象的executeQuery()方法执行查询SQL语句,并使用结果集对象获取查询结果。 6. 关闭连接和释放资源,最后要确保关闭连接对象和释放相关资源,以防止资源泄漏。 sqlite-jdbc-3.36具有良好的性能和稳定性,可以轻松地与Java应用程序集成,并提供了强大的SQLite数据库操作功能。无论是开发桌面应用程序、移动应用程序还是服务器端应用程序,sqlite-jdbc-3.36都是一个很好的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值