0

我目前正在做的是将带有时间戳和其他参数的 GPS 数据发送到远程 MSSQL 数据库。起初,我通过 ksoap2 将它发送到 SOAP WebService。由于开销巨大,我寻找替代方案并通过JTDS实现数据传输以直接插入。在我成功实现这两种方法后,我开始比较它们。我试图找出哪一个会导致更多的流量。我分析了网络流量,令我惊讶的是 SOAP 比 JTDS 便宜。这不是很奇怪吗?我已经发送了相同的数据。我正在使用 JTDS 1.2.7 驱动程序。ksoap 导致约。1.8 kByte 流量和比较 JTDS 导致 ca。2.1 KB。

有没有人有同样的经历或者可以告诉我我可以改变什么?

这是 JTDS 代码。也许有人可以告诉我,是什么导致了流量:

try {
   Class.forName("net.sourceforge.jtds.jdbc.Driver");
   String connString = "jdbc:jtds:sqlserver://192.XXX.X.XX/xxxx;encrypt=false;user=XX;password=XX;instance=SQLEXPRESS;";
   conn = DriverManager.getConnection(connString);
} catch (Exception ex){
   ex.printStackTrace();
}

try {
  Log.w("Connection", "open");

  CallableStatement cs = conn.prepareCall("{ call SetGPS(?, ?, ?, ?, ?, ?, ?)}");
  cs.setString(2, latitude);
  cs.setString(3, longitude);
  cs.setInt(4, ID);
  cs.setString(5, timestamp);
  cs.setString(6, IMEI);
  cs.setInt(7, userID);
  cs.registerOutParameter(1, Types.VARCHAR);

  cs.execute();
  String response = cs.getString(1);

  Log.i("GPS Response:", response);

  conn.close();
} catch (Exception ex){
    ex.printStackTrace();
}
4

1 回答 1

0

好的,我发现是连接的建立导致了 JTDS 网络流量的四分之三。带参数的实际存储过程调用只会导致 ca. 400 字节流量。

因此,如果我们不每次想通过 JTDS (JDBC) 发送数据时都建立连接,那么我们将比使用 SOAP 便宜得多。

希望这有一天会帮助别人;)

于 2012-11-28T14:01:07.340 回答