可实现内网穿透的JDBC协议
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.

244 lines
9.2 KiB

import com.fanruan.ServerStater;
import com.fanruan.cache.ClientCache;
import com.fanruan.utils.DBProperties;
import java.sql.*;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
public static void main(String[] args) {
Test test = new Test();
String[] DBs = new String[]{
DBProperties.MYSQL,
DBProperties.POSTGRESQL,
// DBProperties.SQLSERVER,
// DBProperties.DB2,
// DBProperties.ORACLE
};
new ServerStater(DBs);
ExecutorService threadPool = Executors.newSingleThreadExecutor();
test.testPostSQL(threadPool);
test.testMySQL(threadPool);
}
public void testMySQL(ExecutorService threadPool){
Thread thread = new Thread(() -> {
while(ClientCache.getClient("1001", "mysql") == null){
try {
Thread.sleep(1000);
}catch (Exception e){
e.printStackTrace();
}
}
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "850656");
info.setProperty("agentID", "1001");
info.setProperty("agentDBName", "mysql");
Connection conn = null;
Statement st = null;
PreparedStatement pst = null;
PreparedStatement pst2 = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
try {
Class.forName("com.fanruan.jdbc.driver.MyDriver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", info);
st = conn.createStatement();
rs1 = st.executeQuery("select * from `student`");
System.out.println("-----------");
System.out.println("执行查询语句");
while(rs1.next()) {
System.out.print(rs1.getInt("student_id") + " ");
System.out.print(rs1.getString("student_name")+ " ");
System.out.println(rs1.getString("student_address")+ " ");
}
String sql = "select * from `student` where `student_name`= ?";
pst = conn.prepareStatement(sql);
pst.setString(1, "张三");
rs2 = pst.executeQuery();
System.out.println("-----------");
System.out.println("执行预查询语句1");
while(rs2.next()) {
System.out.print(rs2.getInt("student_id") + " ");
System.out.print(rs2.getString("student_name")+ " ");
System.out.println(rs2.getString("student_address")+ " ");
}
sql = "select * from `student` where `student_address`= ?";
pst2 = conn.prepareStatement(sql);
pst2.setString(1, "上海");
rs3 = pst2.executeQuery();
System.out.println("-----------");
System.out.println("执行预查询语句2");
while(rs3.next()) {
System.out.print(rs3.getInt("student_id") + " ");
System.out.print(rs3.getString("student_name")+ " ");
System.out.println(rs3.getString("student_address")+ " ");
}
}catch (Exception e) {
e.printStackTrace();
} finally {
// 7、关闭对象,回收数据库资源
if (rs1 != null) { //关闭结果集对象
try {
rs1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs2 != null) { //关闭结果集对象
try {
rs2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) { // 关闭数据库操作对象
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pst != null) { // 关闭数据库操作对象
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) { // 关闭数据库连接对象
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
threadPool.execute(thread);
}
public void testPostSQL(ExecutorService threadPool){
Thread thread = new Thread(() -> {
while(ClientCache.getClient("1001", "postgresql") == null){
try {
Thread.sleep(1000);
}catch (Exception e){
e.printStackTrace();
}
}
Properties info = new Properties();
info.setProperty("user", "postgres");
info.setProperty("password", "850656");
info.setProperty("agentID", "1001");
info.setProperty("agentDBName", "postgresql");
Connection conn = null;
Statement st = null;
PreparedStatement pst = null;
PreparedStatement pst2 = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
try {
Class.forName("com.fanruan.jdbc.driver.MyDriver");
conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/test", info);
st = conn.createStatement();
rs1 = st.executeQuery("select * from student");
System.out.println("-----------");
System.out.println("执行查询语句");
while(rs1.next()) {
System.out.print(rs1.getInt("student_id") + " ");
System.out.print(rs1.getString("student_name")+ " ");
System.out.println(rs1.getString("student_address")+ " ");
}
String sql = "select * from student where student_name= ?";
pst = conn.prepareStatement(sql);
pst.setString(1, "张三");
rs2 = pst.executeQuery();
System.out.println("-----------");
System.out.println("执行预查询语句1");
while(rs2.next()) {
System.out.print(rs2.getInt("student_id") + " ");
System.out.print(rs2.getString("student_name")+ " ");
System.out.println(rs2.getString("student_address")+ " ");
}
sql = "select * from student where student_address = ?";
pst2 = conn.prepareStatement(sql);
pst2.setString(1, "上海");
rs3 = pst2.executeQuery();
System.out.println("-----------");
System.out.println("执行预查询语句2");
while(rs3.next()) {
System.out.print(rs3.getInt("student_id") + " ");
System.out.print(rs3.getString("student_name")+ " ");
System.out.println(rs3.getString("student_address")+ " ");
}
}catch (Exception e) {
e.printStackTrace();
} finally {
// 7、关闭对象,回收数据库资源
if (rs1 != null) { //关闭结果集对象
try {
rs1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs2 != null) { //关闭结果集对象
try {
rs2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) { // 关闭数据库操作对象
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pst != null) { // 关闭数据库操作对象
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) { // 关闭数据库连接对象
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
threadPool.execute(thread);
}
}