【发布时间】:2018-02-10 03:45:41
【问题描述】:
这是我用来将取自本地数据库的值插入在线数据库的代码。我从一个本地数据库中获取数据,并将其中的每条记录上传到在线的 17 个不同的表中。代码运行成功,但在 24 小时结束时,代码自动终止,在线程休眠时间后第二次运行。我不知道为什么会这样。请给我一个解决方案,让我每 24 小时运行一次代码。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
class online_data
{
public static void main(String args[])
{
MyThread1 thread1 = new MyThread1();
thread1.start();
}
}
class MyThread1 extends Thread
{
public void run()
{
try{
Class.forName("com.mysql.jdbc.Driver");
//Connection1
Connection con=DriverManager.getConnection("jdbc:mysql://sql124.main-hosting.eu/u678426119_kcg","u678426119_kcg","deepak");
Statement stmt=con.createStatement();
//Connection2
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/kcg","root","icdipl");
Statement stmt2=conn.createStatement();
int i = 1;
String s = "online_data";
while(true)
{
String s1 = s+i;
//Date & Time
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd");
SimpleDateFormat ft1 = new SimpleDateFormat ("hh:mm:ss");
ResultSet rs=stmt2.executeQuery("select * from online_data");
while(rs.next())
{
String q="INSERT INTO "+s1+" VALUES ("+rs.getInt(1)+","+rs.getInt(2)+",'"+rs.getString(3)+"',"+rs.getFloat(4)+","+rs.getFloat(5)+","+rs.getFloat(6)+","+rs.getFloat(7)+","+rs.getFloat(8)+","+rs.getFloat(9)+","+rs.getFloat(10)+","+rs.getFloat(11)+","+rs.getFloat(12)+","+rs.getFloat(13)+","+rs.getFloat(14)+","+rs.getFloat(15)+","+rs.getFloat(16)+","+rs.getFloat(17)+","+rs.getFloat(18)+","+rs.getFloat(19)+","+rs.getFloat(20)+","+rs.getFloat(21)+","+rs.getFloat(22)+","+rs.getFloat(23)+",'"+rs.getString(24)+"',"+rs.getFloat(25)+",'"+rs.getString(26)+"',"+rs.getFloat(27)+",'"+rs.getString(28)+"',"+rs.getFloat(29)+","+rs.getFloat(30)+","+rs.getFloat(31)+","+rs.getFloat(32)+","+rs.getFloat(33)+","+rs.getFloat(34)+","+rs.getFloat(35)+",'"+rs.getString(36)+"',"+rs.getFloat(37)+",'"+rs.getString(38)+"','"+rs.getString(39)+"',"+rs.getFloat(40)+","+rs.getFloat(41)+","+rs.getFloat(42)+","+rs.getFloat(43)+","+rs.getFloat(44)+","+rs.getFloat(45)+","+rs.getFloat(46)+","+rs.getFloat(47)+","+rs.getFloat(48)+",'"+rs.getString(49)+"','"+rs.getString(50)+"',"+rs.getFloat(51)+","+rs.getFloat(52)+",'"+rs.getString(53)+"',"+rs.getFloat(54)+","+rs.getFloat(55)+","+rs.getFloat(56)+","+rs.getFloat(57)+","+rs.getFloat(58)+","+rs.getFloat(59)+","+rs.getFloat(60)+","+rs.getFloat(61)+","+rs.getFloat(62)+","+rs.getFloat(63)+","+rs.getFloat(64)+","+rs.getFloat(65)+","+rs.getFloat(66)+","+rs.getFloat(67)+","+rs.getFloat(68)+","+rs.getFloat(69)+","+rs.getFloat(70)+","+rs.getFloat(71)+","+rs.getFloat(72)+","+rs.getFloat(73)+","+rs.getFloat(74)+","+rs.getFloat(75)+","+rs.getFloat(76)+","+rs.getFloat(77)+","+rs.getFloat(78)+","+rs.getFloat(79)+","+rs.getFloat(80)+","+rs.getFloat(81)+","+rs.getFloat(82)+","+rs.getFloat(83)+","+rs.getFloat(84)+","+rs.getFloat(85)+","+rs.getFloat(86)+",'"+rs.getString(87)+"',"+rs.getFloat(88)+",'"+rs.getString(89)+"',"+rs.getFloat(90)+",'"+rs.getString(91)+"',"+rs.getFloat(92)+",'"+rs.getString(93)+"',"+rs.getFloat(94)+",'"+rs.getString(95)+"',"+rs.getFloat(96)+",'"+rs.getString(97)+"',"+rs.getFloat(98)+",'"+rs.getString(99)+"',"+rs.getFloat(100)+",'"+rs.getString(101)+"','"+ft.format(dNow)+"','"+ft1.format(dNow)+"')";
stmt.executeUpdate(q);
i+=1;
}
randomWait();
i=1;
}
}catch(Exception e){ System.out.println(e);}
}
void randomWait()
{
try {
sleep((long)(1000*60*60*24));
} catch (InterruptedException x) {
System.out.println("Interrupted!");
}
}
}
【问题讨论】:
-
您真的只是在两个 打开 数据库连接的情况下睡了 24 HOURS 吗?!?在那张纸条上,您可能会收到一个打印的异常,告诉您确切地为什么您的无限循环终止了,并且它可能涉及无效连接...
标签: java mysql database jdbc thread-sleep