まず、sqlite-jdbc.jarバッグをダウンロードしてから、jarパッケージをプロジェクトに配置します。ここでは、Android Studio開発ツールを使用し、Add依存関係のlibs
ディレクトリ
にjarバッグを配置します。build.gradle
implementation files('libs/sqlite-jdbc-3.23.1.jar')
Javaを使用してデータベースに接続するには、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");
}
}