不知是不是最近幾年的路由器換了規則了,從家里長連外網的資料庫的話,可能半個小時左右連接就會失效。然后查詢就要卡個20秒。所以我想把這個卡的時間設得短一些,用程式運行后,拔網線的辦法來測驗。怎么設定超時也還是要卡20秒。到底要怎樣設定才有效呢?還是根本沒法設定?
package cn.yishou.testmysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Executor;
public class TestMySQL {
static final String url = "jdbc:mysql://80.240.28.38:2135/Db01?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&user=guest2&password=test009";
static final String sql = "SELECT 666 a";
static final int total = 5; // 回圈執行次數
static final int interval = 2000; // 每次間隔毫秒數
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url);
Executor executor = new Executor() {
@Override
public void execute(Runnable command) {
System.out.println("不知有什么用");
}
};
con.setNetworkTimeout(executor, 3000); // 設定連接超時
//
long now = System.currentTimeMillis() / 1000;
//
try {
for (int i = 0; i < total; i++) {
System.out.println(String.format("\n第%d次 秒=%d", i + 1, System.currentTimeMillis() / 1000 - now));
Thread.sleep(interval);
query(con, sql);
}
//
con.close();
System.out.println(String.format("完美結束 秒=%d", System.currentTimeMillis() / 1000 - now));
} catch (Exception e) {
System.out.println(String.format("出錯啦 秒=%d", System.currentTimeMillis() / 1000 - now));
e.printStackTrace();
}
}
private static void query(Connection con, String sql) throws SQLException {
Statement statement = con.createStatement();
statement.setQueryTimeout(2000); // 設定查詢超時
ResultSet set = statement.executeQuery(sql);
set.next();
long value = set.getLong(1);
System.out.println("value="https://bbs.csdn.net/topics/ + value);
set.close();
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225634.html
標籤:Web 開發
上一篇:求求大佬幫幫忙
