You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
7.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String> 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<String> getAllData() {
dataList = new ArrayList<String>(); // 初始化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
}
}