服务端表的传输:
解决的问题:
- 基于TCP协议,在服务端中连接数据库后将查询到的表返回给客户端。因为在传输过程中是字节流的传输,无法将表的查询结果完整的传输给客户端
- 在数据传输的过程中 服务端快速的传输数据时,在客户端解析的过程中会将服务端传送来的多个流 解析到一起。
问题出现的现象:
1.在传输数据库表的查询结果时,在客户端只会解析到第一个元组的信息或者解析不到任何信息
分析:在服务端查询数据库表时 并不能单纯的按字节流传输及解析
2.在传输一列查询结果时 客户端在解析的过程中会将多个流解析成一个流文件,例如分两次传输在数据库查询的信息时,在客户端只进行一次解析,并解析到一起。
分析:在客户端传输过快造成的
解决方法:
1.在获取对数据库的查询结果时 将查询的结果放在一个数组中进行传输:
String sql = "SELECT * FROM vincenttest.student\r\n"+
"order by Sage ASC\r\n";
Statement sta = test01.getconnection().createStatement();
ResultSet rs = sta.executeQuery(sql1);
String[] array=new String[10];
int i=0;
while(rs.next()){
b1 = rs.getString("Sname");
array[i++]=rs.getString("Sname");
}
2.在解析过程中是由于发送端速度太快造成将多个流解析到一起,所以在服务端优化传输速度;
os.write("前十名".getBytes());
try {
for(int i1 = 0; i1 < 4; i1++)
{
os.write(("第" + i1 +"名 :"+array[i1]).getBytes());
Thread.sleep(1000);
}
} catch (InterruptedException e1) {
e1.printStackTrace();
}
全部的代码已经同步github
点击查看完整代码