在Android中,可以使用JDBC驱动访问MySQL数据库。首先需要添加MySQL JDBC驱动到项目中,然后使用Connection、Statement和ResultSet等对象进行数据库操作。
在Android中访问MySQL数据库,可以使用以下步骤:
1、添加依赖库
在项目的build.gradle文件中添加MySQL Connector/J的依赖库:
dependencies { implementation 'mysql:mysqlconnectorjava:8.0.26' }
2、创建数据库连接工具类
创建一个名为DBHelper的工具类,用于封装数据库连接和操作的方法。
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydb.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "mytable"; private static final String COLUMN_ID = "id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_AGE = "age"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE " + TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
3、创建数据库操作接口
创建一个名为MyDatabaseOperation的接口,用于定义访问数据库的方法。
public interface MyDatabaseOperation { void insertData(String name, int age); void updateData(int id, String name, int age); void deleteData(int id); void queryAllData(); }
4、实现数据库操作接口
创建一个名为MyDatabaseImpl的类,实现MyDatabaseOperation接口,在这个类中,我们将使用DBHelper工具类来操作数据库。
import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; public class MyDatabaseImpl implements MyDatabaseOperation { private DBHelper dbHelper; private SQLiteDatabase db; private List<String> dataList = new ArrayList<>(); // 存储查询到的数据列表 private static final String TAG = "MyDatabaseImpl"; // 日志标签名 private static final String DB_PATH = "/data/data/com.example.myapplication/databases/"; // 数据库文件路径(需要根据实际情况修改) private static final String DB_NAME = "mydb"; // 数据库名称(需要根据实际情况修改) private static final int DB_VERSION = 1; // 数据库版本号(需要根据实际情况修改) private static final String DB_FILE = DB_PATH + DB_NAME + "." + DB_VERSION; // 数据库文件路径(需要根据实际情况修改) private static final String DB_TABLE = "mytable"; // 数据库表名(需要根据实际情况修改) private static final String[] ALL_COLUMNS = {"id", "name", "age"}; // 所有列名(需要根据实际情况修改) private static final String[] PROJECTION = {"id AS _id", "name", "age"}; // 查询结果投影(需要根据实际情况修改) private static final String SORT_ORDER = "id ASC"; // 排序规则(需要根据实际情况修改) private static final int STARRED = 1; // SQL语句中的通配符,表示匹配任意字符出现0次或多次(需要根据实际情况修改) private static final int DOTTED = 1; // SQL语句中的通配符,表示匹配任意字符出现一次(需要根据实际情况修改) private static final int EMPTY = 1; // SQL语句中的通配符,表示占位符(需要根据实际情况修改) private static final int NOT_NULLABLE = 0; // SQL语句中的约束条件,表示非空(需要根据实际情况修改) private static final int NULLABLE = 1; // SQL语句中的约束条件,表示可空(需要根据实际情况修改) private static final int ASCENDING = 1; // SQL语句中的排序规则,表示升序(需要根据实际情况修改) private static final int DESCENDING = 2; // SQL语句中的排序规则,表示降序(需要根据实际情况修改) private static final int NOT_EQUALS = 0; // SQL语句中的比较运算符,表示不等于(需要根据实际情况修改) private static final int EQUALS = 1; // SQL语句中的比较运算符,表示等于(需要根据实际情况修改) private static final int LESS_THAN = 2; // SQL语句中的比较运算符,表示小于(需要根据实际情况修改) private static final int LESS_THAN_OR_EQUALS = 3; // SQL语句中的比较运算符,表示小于等于(需要根据实际情况修改) private static final int GREATER_THAN = 4; // SQL语句中的比较运算符,表示大于(需要根据实际情况修改) private static final int GREATER_THAN_OR_EQUALS = 5; // SQL语句中的比较运算符,表示大于等于(需要根据实际情况修改) private static final int IS_NULL = 6; // SQL语句中的函数,表示判断是否为空(需要根据实际情况修改) private static final int ISNOTNULL = 7; // SQL语句中的函数,表示判断是否不为空(需要根据实际情况修改) private static final int DIGIT = 8; // SQL语句中的函数,表示提取数字(需要根据实际情况修改) private static final int LIKE = 9; // SQL语句中的函数,表示模糊匹配(需要根据实际情况修改)