|
|
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
|
|
|
}
|
|
|
} |