1 直接使用 JDBC 調(diào)用 : insert into table1 select * from table2
成都創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、新華網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、成都商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為新華等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
2) 通過(guò)Iterator(迭代器),封裝成多條insert into table1 values(?,?,?)語(yǔ)句
例如:table2有一萬(wàn)條記錄,那么就通過(guò)一萬(wàn)個(gè) " insert into table1 values(?,?,?) " 完成此功能。
package mysql;
import java.sql.*;
/**
* @author xys
*/
public class ConnectMysql {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
String url = "jdbc:mysql://localhost:3306/databaseName";
String user = "mysqluser";
String password = "password";
String driverClass = "com.mysql.cj.jdbc.Driver";
Connection connection = null;
Class.forName(driverClass);
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (connection != null) {
System.out.println("數(shù)據(jù)庫(kù)連接成功");
} else {
System.out.println("數(shù)據(jù)庫(kù)連接失敗");
connection.close();
}
return connection;
}
public void getResult() throws ClassNotFoundException, SQLException {
// 實(shí)例化 Statement 對(duì)象
Statement statement = getConnection().createStatement();
// 要執(zhí)行的 Mysql 數(shù)據(jù)庫(kù)操作語(yǔ)句(增、刪、改、查)
String sql = "";
// 展開(kāi)結(jié)果集數(shù)據(jù)庫(kù)
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通過(guò)字段檢索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 輸出數(shù)據(jù)
System.out.println("ID : " +id);
System.out.println("name :" + name);
}
// 完成后需要依次關(guān)閉
resultSet.close();
statement.close();
getConnection().close();
}
}
我們不能保證不丟失,但是我們可以在丟失的時(shí)候再發(fā)啊,所以我們可以模范TCP協(xié)議,下面是我的想法,僅供參考:
1。服務(wù)端為每一個(gè)發(fā)送的數(shù)據(jù)加一個(gè)標(biāo)識(shí),并在發(fā)送的時(shí)候該數(shù)據(jù)加入到一個(gè)數(shù)組中,這個(gè)數(shù)組同時(shí)要記錄這個(gè)數(shù)據(jù)加入的時(shí)間(之后要用到這個(gè)時(shí)間)
2。客戶端收到一個(gè)數(shù)據(jù)的時(shí)候,要返回服務(wù)端一個(gè)接受成功的信息,這個(gè)信息包含數(shù)據(jù)標(biāo)識(shí),服務(wù)端收到這個(gè)信息就將數(shù)組中對(duì)應(yīng)的數(shù)據(jù)刪除;
3。服務(wù)器隔一段時(shí)間,就讀取那個(gè)數(shù)組,判斷數(shù)據(jù)加入數(shù)組的時(shí)間到當(dāng)前時(shí)間的時(shí)間差,如果時(shí)間差大于某一個(gè)值(這個(gè)值要好好考慮,不過(guò)應(yīng)該要大于1秒),我們就假設(shè)發(fā)送失敗了,那就重發(fā)這個(gè)數(shù)據(jù)
4。重復(fù)第2和3步驟,直到所有數(shù)據(jù)發(fā)完以及數(shù)組為空,那么客戶端就應(yīng)該接受到所有數(shù)據(jù)了
當(dāng)然這肯定會(huì)影響性能,祝你好運(yùn)
是的,只要涉及到源碼或是配置的修改,必須重新Build。不過(guò)在Eclipse中,如果你Project下的Build Automatically已經(jīng)被勾中了,就不需要你重新Build了。而用MyEclipse的話就重新部署。