【发布时间】:2020-10-26 11:36:40
【问题描述】:
大家好,我正在开发的应用程序将数据从 android 应用程序发送到 MS-SQL 服务器和 C# 中的主 Windows 软件,它从 MS-SQl 服务器接收数据。 问题是程序需要花费太多时间来建立连接,尤其是在 android 应用程序中,有时它会使应用程序崩溃。 顺便说一句,我们国家的互联网速度有时会持续一周。 我搜索了一个解决方案,但在互联网上没有找到,我想不出任何方法来解决它。 我看到 Viber、Watsapp、Masenger 等,即使互联网速度是一周,它也会立即或同步发送数据。 所以我能得到一些帮助和建议。 并且有一个连接Helper方法:
公共连接连接(){
IP="www.examlple.net";
DB="DB_test";
DBUserName="admin";
DBPassword="*****";
StrictMode.ThreadPolicy policy= new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection connection=null;
String connectionURL=null;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
connectionURL ="jdbc:jtds:sqlserver://"+IP+";DatabaseName="+DB+";integratedSecurity=true;user="+DBUserName+";password="+DBPassword;
connection = DriverManager.getConnection(connectionURL);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
return connection;
}
【问题讨论】:
-
如果您的连接速度较慢,您无能为力。但是可以实现一个重试流程medium.com/@pramodsachintha/…
-
@pix 好的,我同意你的观点,但即使互联网很好,建立连接也需要时间>
-
使用连接池。更好的是,不要通过网络从移动设备执行 SQL,而是让移动设备与网络服务通信,网络服务反过来执行 SQL 语句。这就是你提到的所有应用程序正在做的事情。
-
@Andreas 是对的,您应该/必须使用专用的网络服务。
-
用于与数据库“对话”的通信协议通常不适用于高延迟网络。这使得直接使用数据库存在问题:速度慢并且可能不安全。这也是人们几乎总是创建“API*:处理数据库的 Web 服务”的原因之一。
标签: java c# android sql-server mssql-jdbc