1、创建一个名为DatabaseQuery
的类,实现Runnable
接口并实现单例模式。
2、在单例模式的构造函数中建立数据库连接,并创建Statement
对象。
3、通过getInstance()
方法获取DatabaseQuery
类的实例。
4、在run()
方法中执行数据库查询,并输出查询结果。
5、在main()
方法中获取DatabaseQuery
实例,创建一个线程并启动。
代码如下:单例模式的查询子线程。
package com.singletonmodel;
import java.sql.*;
public class DatabaseQuery implements Runnable {
private static DatabaseQuery instance;
private Connection connection;
private Statement statement;
private DatabaseQuery() {
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost/test_data?user=root&password=admin");
statement = connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static DatabaseQuery getInstance() {
if (instance == null) {
instance = new DatabaseQuery();
}
return instance;
}
@Override
public void run() {
try {
String query = "SELECT * FROM words_info";
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
int id = resultSet.getInt("Id");
String engName = resultSet.getString("eng_name");
String chiVal = resultSet.getString("chi_val");
String lastUsedTime = resultSet.getString("last_used_time");
int usedTimes = resultSet.getInt("used_times");
String createdTime = resultSet.getString("created_time");
int priority = resultSet.getInt("priority");
System.out.println("Id: " + id);
System.out.println("eng_name: " + engName);
System.out.println("chi_val: " + chiVal);
System.out.println("last_used_time: " + lastUsedTime);
System.out.println("used_times: " + usedTimes);
System.out.println("created_time: " + createdTime);
System.out.println("priority: " + priority);
System.out.println("-----------------------------");
}
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在主线程中启动查询子线程:
package com.singletonmodel;
public class Main {
public static void main(String[] args) {
DatabaseQuery databaseQuery = DatabaseQuery.getInstance();
Thread thread = new Thread(databaseQuery);
thread.start();
}
}
输出结果: