Android访问远程SQL数据库

时间:2012-05-21 04:43:47

标签: android sql-server

我可以直接从android程序访问远程SQL数据库(在Web服务器上)吗?即只需打开具有所有必需参数的连接,然后执行SQL查询?

这是一个私人程序(不向公众开放),仅适用于指定的手机,因此我并不担心第三方获取数据库访问权限。

如果是这样 - 我在Java中需要哪些库?

感谢。

3 个答案:

答案 0 :(得分:19)

这个问题已多次出现。如果您将MSSQL JDBC驱动程序部署到Android设备,然后将SQL服务器直接暴露给Internet,则可以直接将Android设备连接到SQL服务器。如果MSSQL驱动程序在Android上正常工作是一个完全不同的问题。

这就是你可以做到的。然而,这就是为什么这是一个坏主意。

  1. 您正在将SQL服务器直接暴露给互联网。除非您加密MSSQL服务器和Android设备之间的数据,否则确定的黑客可以相对容易地嗅探设备和MSSQL之间的TDS数据流并对其进行反向工程并窃取您的数据。加密可能会使攻击者几乎不可能更难以窃取您的数据。但是,攻击者仍然可以直接对您的数据库发起DOS / DDOS攻击。 不是个好主意!

  2. 如果您计划连接其他移动设备(iPhone,Symbian,BlackBerry等),您还需要能够从这些设备创建SQL连接。例如,iPhone本身不支持Java(来自我的内存),所以你需要找到一种方法将iPhone连接到SQL服务器。黑莓手机可能会更容易,但Symbian会让你失望。因此,您需要为连接到数据库的每个设备创建一个自定义解决方案。 糟糕的想法负担维护

  3. 创建可以操作数据库的Web服务或自定义TCP / IP服务器。从您的设备连接到此Web服务/服务。 Web服务是要走的路。如今,超过90%的设备本身都能够进行网络服务呼叫。

答案 1 :(得分:4)

我认为你必须使用webservice与SQL数据库进行通信。您可以在该Web服务中定义一般方法,如runSomeScalarQuery或runOneTabularQuery和...,并通过自定义协议(如自定义对象)发送数据库响应。

答案 2 :(得分:0)

这是一种非常糟糕的做法,但如果您需要它用于测试目的,或者由于您没有任何其他选项,它仍然可以连接到外部数据库。如果数据访问不是太重,它在大多数情况下都能正常工作。

  • 从这里下载驱动程序:http://dev.mysql.com/downloads/connector/j/3.0.html(有一些较新的驱动程序,但这个工作正常)
  • 如果您的项目没有“libs”文件夹,请立即创建。
  • 解压缩您下载的文件,并将文件mysql-connector-java-3.0.17-ga-bin.jar复制到libs文件夹
  • 将其添加到构建路径:
    • 右键点击项目>构建路径>配置构建路径
    • 标签库>添加JAR
    • 浏览到libs文件夹并选择jar文件
  • 一旦准备就绪,我们可以继续编程。我们知道,Android迫使我们在一个单独的线程中进行网络访问,因此我们必须选择一种创建Thread的方法,例如我们可以使用AsynkTask,并将我们的代码添加到{{1方法。

    doInBackground