服务端与客户端之间的mysql表传输以及服务端发送的优化

服务端表的传输:

解决的问题:

  • 基于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
点击查看完整代码

猜你喜欢

转载自blog.csdn.net/qq_40265485/article/details/85225776