package com.example.administrator.baiduvoicetest.utils; import android.util.Log; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * function: 数据库工具类,连接数据库用 */ public class JDBCUtils { private static final String TAG = "mysql11111"; java.sql.Connection conn=null; public static void mymysql(){ final Thread thread =new Thread(new Runnable() { @Override public void run() { while (!Thread.interrupted()) { try { Thread.sleep(100); // 每隔0.1秒尝试连接 } catch (InterruptedException e) { Log.e(TAG, e.toString()); } // 1.加载JDBC驱动 try { Class.forName("com.mysql.jdbc.Driver"); Log.v(TAG, "加载JDBC驱动成功"); } catch (ClassNotFoundException e) { Log.e(TAG, "加载JDBC驱动失败"); return; } // 2.设置好IP/端口/数据库名/用户名/密码等必要的连接信息 String ip = "192.168.31.248"; int port = 3306; String dbName = "user"; String url = "jdbc:mysql://" + ip + ":" + port + "/" + dbName+"?useUnicode=true&characterEncoding=utf-8&useSSL=false"; // 构建连接mysql的字符串 String user = "root"; String password = "root"; // 3.连接JDBC try { java.sql.Connection conn = DriverManager.getConnection(url, user, password); Log.d(TAG, "数据库连接成功"); conn.close(); return; } catch (SQLException e) { Log.e(TAG, e.getMessage()); } } } }); thread.start(); } } package com.example.administrator.baiduvoicetest; import android.content.Context; // 导入Context类,提供应用程序环境信息 import android.database.sqlite.SQLiteDatabase; // 导入SQLiteDatabase类,用于操作SQLite数据库 import android.database.sqlite.SQLiteOpenHelper; // 导入SQLiteOpenHelper类,用于帮助创建、管理和版本控制SQLite数据库 import android.util.Log; // 导入Log类,用于打印日志信息 /** * 数据库连接类,用于管理数据库的创建和升级。 */ public class RALDbConnect extends SQLiteOpenHelper { // 数据库名称 public static final String DATABASE_NAME = "UserInfo"; // 表名称 public static final String TABLE_NAME = "mytable"; // 数据库版本 public static final int DATABASE_VERSION = 1; // 表中列的名称 public static final String UID = "_id"; // 主键,自动递增 public static final String USERNAME = "Username"; // 用户名 public static final String PASSWORD = "Password"; // 密码 public static final String EMAIL = "Email"; // 邮箱 public static final String PHONENUMBER = "Phonenumber"; // 电话号码 public static final String ADDRESS = "Address"; // 地址 // 创建表的SQL语句 private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + USERNAME + " VARCHAR(255), " + PASSWORD + " VARCHAR(255), " + EMAIL + " VARCHAR(255), " + PHONENUMBER + " VARCHAR(255), " + ADDRESS + " VARCHAR(255));"; // 删除表的SQL语句 private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME; // 上下文对象 private Context context; // 构造函数,接收Context对象 public RALDbConnect(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // 调用父类的构造函数 this.context = context; } // 当数据库第一次创建时调用 @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(CREATE_TABLE); // 执行SQL语句创建表 } catch (Exception ex) { Log.e("myerror", ex.getMessage()); // 打印错误日志 } } // 当数据库版本升级时调用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { try { Log.i("currentDb", "upgraded"); // 打印日志信息 db.execSQL(DROP_TABLE); // 删除旧表 onCreate(db); // 重新创建表 } catch (Exception ex) { Log.e("error on Upgrade", ex.getMessage()); // 打印升级错误日志 } } } package com.example.administrator.baiduvoicetest; import java.util.ArrayList; // 导入ArrayList类 import android.content.ContentValues; // 导入ContentValues类,用于存储数据库的行值 import android.content.Context; // 导入Context类,提供应用程序环境信息 import android.database.Cursor; // 导入Cursor类,用于遍历数据库查询结果 import android.database.sqlite.SQLiteDatabase; // 导入SQLiteDatabase类,用于操作SQLite数据库 public class RALDbQuery { RALDbConnect mdc; // RALDbConnect类的实例,用于数据库连接 public static ArrayList dataList; // 用于存储从数据库获取的数据 public RALDbQuery(Context context){ // 构造函数,接收Context对象作为参数 mdc = new RALDbConnect(context); // 初始化数据库连接 } // 向数据库插入数据的方法 public long insertData(String name, String pass, String email, String phonenumber, String address) { SQLiteDatabase sdb = mdc.getWritableDatabase(); // 获取可写的数据库实例 ContentValues cntvals = new ContentValues(); // 创建ContentValues实例,用于存储列的值 cntvals.put(RALDbConnect.USERNAME, name); // 将用户名存入ContentValues cntvals.put(RALDbConnect.PASSWORD, pass); // 将密码存入ContentValues cntvals.put(RALDbConnect.EMAIL, email); // 将邮箱存入ContentValues cntvals.put(RALDbConnect.PHONENUMBER, phonenumber); // 将电话号码存入ContentValues cntvals.put(RALDbConnect.ADDRESS, address); // 将地址存入ContentValues long id = sdb.insert(RALDbConnect.TABLE_NAME, null, cntvals); // 将数据插入数据库,并返回新插入行的ID return id; // 返回插入数据的ID } // 从数据库获取所有数据的方法 public ArrayList getAllData() { dataList = new ArrayList(); // 初始化dataList SQLiteDatabase sdb = mdc.getWritableDatabase(); // 获取可写的数据库实例 String[] columns = {mdc.UID, mdc.USERNAME, mdc.PASSWORD}; // 指定要查询的列 Cursor cursor = sdb.query(mdc.TABLE_NAME, columns, null, null, null, null, null); // 执行查询,返回Cursor对象 while(cursor.moveToNext()) { // 遍历Cursor中的每一行 int cid = cursor.getInt(cursor.getColumnIndex(mdc.UID)); // 获取当前行的UID String name = cursor.getString(cursor.getColumnIndex(mdc.USERNAME)); // 获取当前行的用户名 String password = cursor.getString(cursor.getColumnIndex(mdc.PASSWORD)); // 获取当前行的密码 dataList.add(cid + " " + name + " " + password); // 将UID、用户名和密码添加到dataList } return dataList; // 返回包含所有数据的ArrayList } }