2

这个问题可能是一个基本问题,如果是,请原谅我。我正在尝试将我的Android 应用程序连接到 MSSQL Server。我在下面链接的问题中使用了相同的代码。我根据此链接中选择的答案使用了 sqljdbc 4.3.0:

com.mysql.jdbc.driver 类未找到异常

当我这样做时,它调试成功,但是当我在我的设备上运行它时,它是三星 Galaxy Y(姜饼)它给了我这个错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host server.com/Db_name, port 1433 has failed. Error: "null. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

任何帮助将不胜感激。

编辑:我在模拟器上运行它,它在文本视图中给出了这个错误。

android.os.NetworkOnMainThreadException

4

2 回答 2

1

你得到了这个例外:

com.microsoft.sqlserver.jdbc.SQLServerException:The connection to the 
          host server.com, named instance Db_name has failed. 
Error:"Java.net.SocketTimeoutException". Verify the server and the instance names, 
          check that no firewall is blocking UDP traffic to port 1434, and for 
          SQL Server 2005 or later verify that the SQL Server Browser Service 
          is running on the host.

基本上,您需要按照异常消息中的说明进行操作:

  1. 检查您使用的服务器主机名是否正确。(真的是“server.com”吗?)
  2. 检查您使用的实例名称是否正确。(真的是“Db_name”吗?)
  3. 检查是否没有防火墙阻止您从设备访问 UDP 端口 1434。
  4. 检查 SQL Server 浏览器服务是否在“server.com”(或任何实际情况)上运行。

在您的设备上尝试的其他几件事:

  • 检查您是否可以对“server.com”(或其他)进行 DNS 查找
  • 检查您是否可以“ping”“server.com”主机(或其他)

基本上,有很多事情可能是错误的,您需要有条不紊地消除它们,直到找到问题的真正原因。我们不能为你这样做。


我在模拟器上运行它,它在文本视图中给出了这个错误。

   android.os.NetworkOnMainThreadException

这是一个不同的问题。

这是javadoc所说的:

“当应用程序尝试在其主线程上执行网络操作时引发的异常。

这仅针对面向 Honeycomb SDK 或更高版本的应用程序抛出。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。请参阅文档设计响应性。”

简而言之,你不应该在主事件线程上做网络事情(包括与平台外的数据库对话)......'因为它可能会导致 UI 长时间锁定。

于 2013-03-08T09:27:12.297 回答
0

您的 URL 有问题,请使用以下 URL 格式:

jdbc:sqlserver://server.com\\Db_name;
于 2013-03-08T07:54:43.317 回答