重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1 直接使用 JDBC 调用 : insert into table1 select * from table2
成都创新互联专注于企业全网营销推广、网站重做改版、新华网站定制设计、自适应品牌网站建设、H5网站设计、成都商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新华等各大城市提供网站开发制作服务。
2) 通过Iterator(迭代器),封装成多条insert into table1 values(?,?,?)语句
例如:table2有一万条记录,那么就通过一万个 " 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("数据库连接成功");
} else {
System.out.println("数据库连接失败");
connection.close();
}
return connection;
}
public void getResult() throws ClassNotFoundException, SQLException {
// 实例化 Statement 对象
Statement statement = getConnection().createStatement();
// 要执行的 Mysql 数据库操作语句(增、删、改、查)
String sql = "";
// 展开结果集数据库
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通过字段检索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 输出数据
System.out.println("ID : " +id);
System.out.println("name :" + name);
}
// 完成后需要依次关闭
resultSet.close();
statement.close();
getConnection().close();
}
}
我们不能保证不丢失,但是我们可以在丢失的时候再发啊,所以我们可以模范TCP协议,下面是我的想法,仅供参考:
1。服务端为每一个发送的数据加一个标识,并在发送的时候该数据加入到一个数组中,这个数组同时要记录这个数据加入的时间(之后要用到这个时间)
2。客户端收到一个数据的时候,要返回服务端一个接受成功的信息,这个信息包含数据标识,服务端收到这个信息就将数组中对应的数据删除;
3。服务器隔一段时间,就读取那个数组,判断数据加入数组的时间到当前时间的时间差,如果时间差大于某一个值(这个值要好好考虑,不过应该要大于1秒),我们就假设发送失败了,那就重发这个数据
4。重复第2和3步骤,直到所有数据发完以及数组为空,那么客户端就应该接受到所有数据了
当然这肯定会影响性能,祝你好运
是的,只要涉及到源码或是配置的修改,必须重新Build。不过在Eclipse中,如果你Project下的Build Automatically已经被勾中了,就不需要你重新Build了。而用MyEclipse的话就重新部署。