mainメソッドで直接例外をスローし始めましたが、jvmが停止しました。trycatchをthrowに変更したところ、SQLExceptionであることがわかりました。URLに問題があると思いました。インターネットに書かれた指示に従って、wait_timeoutを追加してください。 、再起動するかどうか。
次にスタック情報を出力させます。このように、
オンラインで確認して提案しましたが
、追加して再度確認しました。これが問題だと思います。
私は自分が愚かであることに気づきました、私のものはiniによって構成されました。
怒ってsslをtrueに変更したところ、今回は以前に報告されたエラーではなく、トランスポート:「ソケット」のみが表示されていました。インターネットを検索しました。他のアイテムを閉じているだけだと混乱した人もいました。閉じた後、falseに変更してください、ねえ、それは出ています!しかし、なぜトランスポートがあるのかわかりません。「ソケット」で切断され、参照を続けて
から、アイデアをオフにしてから、もう一度オンにします。世界平和、
私が書いた簡単なコードを添付します。
import java.sql.*;
public class New {
public static void main(String[] args){
try {
Class.forName("com.mysql.jdbc.Driver");//注册数据库的驱动
//获取数据库连接
Connection con = DriverManager.getConnection("jdbc:mysql:/localhost:3506/join?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8", "root", "password");
//需要执行的sql语句
String sql = "select * from my_employees";
//获取预处理对象
PreparedStatement statement = con.prepareStatement(sql);
//执行sql语句
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
//如果有下一条记录
String id = resultSet.getString("id");//根据列名返回值
String First_name = resultSet.getString("First_name");
String Last_name = resultSet.getString("Last_name");
String Userid = resultSet.getString("Userid");
int Salary = resultSet.getInt(5);//根据列的顺序返回值
System.out.println(id + "\t" + First_name + "\t" + Last_name + "\t" + "Userid" + "\t" + "Salary");
}
//关闭jdbc连接;
resultSet.close();
statement.close();
con.close();
}catch ( ClassNotFoundException e)
{
System.out.println("1");
}catch (SQLException e)
{
System.out.println("2");
e.getStackTrace();
}
}
}
私と次のリンクを手伝ってくれてありがとう:
https ://blog.csdn.net/a704397849/article/details/89378931
https://www.cnblogs.com/hafiz/p/5879432.html