SQLite(5)-Javaデータベース接続(JDBC)

まず、sqlite-jdbc.jarバッグをダウンロードしてから、jarパッケージをプロジェクトに配置します。ここでは、Android Studio開発ツールを使用し、Add依存関係のlibsディレクトリ
ここに画像の説明を挿入します
jarバッグを配置します。build.gradle

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

Javaを使用してデータベースに接続するには、3つの基本的な手順があります。

  1. データベースドライバをロードします
  2. データベース接続を確立する
  3. SQL実行オブジェクトステートメントの作成

コード:

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");


    }

   
}

おすすめ

転載: blog.csdn.net/hzw2017/article/details/84565475