在Android开发中,连接数据库是一项常见且重要的任务,无论是本地的SQLite数据库,还是远程的MySQL数据库,开发者都需要掌握相关的技能,本文将详细介绍如何在Android应用中连接MySQL数据库,并提供一些实用的技巧和示例代码。
一、准备工作
1. 安装MySQL数据库
确保你的MySQL数据库已经安装并运行,如果还没有安装,可以从[MySQL官网](https://www.mysql.com/)下载并安装。
2. 创建数据库和用户
在MySQL数据库中创建一个新数据库,并为该数据库分配一个用户。
CREATE DATABASE mydb; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
3. 下载MySQL JDBC驱动程序
从[MySQL官方网站](https://dev.mysql.com/downloads/connector/j/)下载MySQL JDBC驱动程序(Connector/J)。
二、配置Android项目
1. 添加MySQL JDBC驱动程序到项目中
将下载的MySQL JDBC JAR文件添加到你的Android项目中,如果你使用的是Gradle构建系统,可以在build.gradle
文件中添加以下依赖项:
dependencies { implementation 'mysql:mysql-connector-java:8.0.16' }
2. 配置AndroidManifest.xml
在AndroidManifest.xml
文件中添加必要的权限:
<uses-permission android:name="android.permission.INTERNET"/>
三、创建数据连接类
创建一个名为DbUtil.java
的数据连接类,用于管理与MySQL数据库的连接:
public class DbUtil { public static String IP = "192.168.2.157"; // 数据库IP地址 public static String DB_NAME = "mydb"; // 数据库名 public static String DB_USERNAME = "myuser"; // 用户名 public static String DB_PASSWORD = "password"; // 密码 public static Connection createConnection() { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Connection conn = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); String connURL = "jdbc:mysql://" + IP + ":3306/" + DB_NAME + "?useUnicode=true&characterEncoding=utf8"; conn = DriverManager.getConnection(connURL, DB_USERNAME, DB_PASSWORD); } catch (SQLException | ClassNotFoundException e) { Log.e("DB_ERROR", e.getMessage()); } return conn; } }
四、基本数据库操作
以下是一些常见的数据库操作示例,包括插入、删除、更新和查询数据:
1. 插入数据
public void insertData(String name, String className) { Connection conn = DbUtil.createConnection(); if (conn != null) { try { String sql = "INSERT INTO student (name, class) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.setString(2, className); pstmt.executeUpdate(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } finally { try { conn.close(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } } } }
2. 删除数据
public void deleteData(String name) { Connection conn = DbUtil.createConnection(); if (conn != null) { try { String sql = "DELETE FROM student WHERE name = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.executeUpdate(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } finally { try { conn.close(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } } } }
3. 更新数据
public void updateData(String oldName, String newName, String newClass) { Connection conn = DbUtil.createConnection(); if (conn != null) { try { String sql = "UPDATE student SET name = ?, class = ? WHERE name = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, newName); pstmt.setString(2, newClass); pstmt.setString(3, oldName); pstmt.executeUpdate(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } finally { try { conn.close(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } } } }
4. 查询数据
public void queryData() { Connection conn = DbUtil.createConnection(); if (conn != null) { try { String sql = "SELECT * FROM student"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { String name = rs.getString("name"); String className = rs.getString("class"); Log.d("QUERY_RESULT", "Name: " + name + ", Class: " + className); } } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } finally { try { conn.close(); } catch (SQLException e) { Log.e("DB_ERROR", e.getMessage()); } } } }
五、常见问题解答
Q1: 如何在Android中使用SQLite数据库?
A1: SQLite是Android自带的轻量级数据库,非常适合本地数据存储,使用SQLite时,首先需要创建一个继承自SQLiteOpenHelper
的类,然后在该类中实现onCreate
方法来创建数据库表。
public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "student"; private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, class TEXT)"; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
通过上述代码,你可以在Android应用中使用SQLite数据库进行数据存储和管理。
Q2: 如何处理网络权限问题?
A2: 在Android应用中访问网络资源时,需要在AndroidManifest.xml
文件中声明INTERNET
权限,从Android 6.0(API级别23)开始,还需要动态请求运行时权限,以下是如何动态请求网络权限的示例代码:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, 1); } else { // 已经获得权限,执行网络操作 }
通过上述方法,可以确保应用在访问网络资源时具备必要的权限,避免因权限问题导致应用崩溃或功能异常。
到此,以上就是小编对于“android开发怎么连接数据库连接”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/625663.html