Android 上的 JDBC

Posted

技术标签:

【中文标题】Android 上的 JDBC【英文标题】:JDBC on Android 【发布时间】:2012-04-03 12:31:57 【问题描述】:

我是 android 新手,完全是 Java 的新手,我正在尝试将我的 Android 应用程序连接到 SQL Server 2005。我知道处理数据的首选方式是通过使用 Web 服务,但出于我的目的,我选择通过直接 SQL 连接进行连接。也就是说,我将 JDBC4 jar 文件添加到我的项目中,并确保在我的 sql 服务器上打开端口 1433(我使用 Windows 桌面应用程序以及我方便的 Windows 移动应用程序对此进行了测试),但对于我似乎无法让我的 android 应用程序连接到权限被拒绝错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host
10.0.0.217, port 1433 has failed. Error: "Permission denied. Verify the connection   
properties. Make sure that an instance of SQL Server is running on the host and
accepting TCP/IP connections at the port. Make sure that TCP connections to the 
port are not blocked by a firewall.".

我正在使用我的 sa 用户名/密码,我再次在不同的平台上进行了测试,所以我至少从概念上知道它应该可以工作。以下是我在Eclipse中的连接代码:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
con = DriverManager.getConnection("jdbc:sqlserver://10.0.0.217;databaseName=star","sa","MyPassword");

根据我一直在阅读的内容,每个人的解决方案是在他们的 SQL 配置中添加 1433,但我的已经是,而且我还确保启用了 IP 地址。我很茫然,但希望有人遇到类似的问题并找到解决方案。

任何帮助都会很棒。谢谢。

【问题讨论】:

确保在 SQL Server 上启用了 TCP/IP 网络库。默认情况下,它只侦听命名管道 IIRC。 是的,我检查了本机客户端和网络配置,但两者确实都已启用,并且它们的默认端口设置为 1433。 【参考方案1】:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

你的 android 清单文件中有那行吗?

【讨论】:

我没有,没有看到我需要在文档中的任何地方。我试试看。 那行得通……有点。现在它给我留下了以下错误:'com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密建立与 SQL Server 的安全连接。错误:“套接字关闭”。有没有办法在清单或连接字符串中禁用 SSL(我没有看到任何在线内容)? 在相关说明中,将“encrypt=false”放在我的连接字符串中似乎并没有这样做。 我切换到使用 JTDS 驱动程序,它现在可以与您建议的清单更改一起使用...不确定为什么 JDBC 驱动程序存在 SSL 问题,但我似乎找不到解决方案在线,没有时间投入。

以上是关于Android 上的 JDBC的主要内容,如果未能解决你的问题,请参考以下文章

ListView 上的 LongPress 与 Android 上的超链接

Android 9 上的 android.database.sqlite.SQLiteCantOpenDatabaseException

为啥我不能从 Android 上的串行端口打开/写入?

Android 上的协程(第二部分):入门

Android 7.0 上的 Android WebView InflateException

为啥 Android 上的 JUnit 4 不工作?