我可以直接从android程序访问远程SQL数据库(在Web服务器上)吗?即只需打开具有所有必需参数的连接,然后执行SQL查询?
这是一个私人程序(不向公众开放),仅适用于指定的手机,因此我并不担心第三方获取数据库访问权限。
如果是这样 - 我在Java中需要哪些库?
感谢。
答案 0 :(得分:19)
这个问题已多次出现。如果您将MSSQL JDBC驱动程序部署到Android设备,然后将SQL服务器直接暴露给Internet,则可以直接将Android设备连接到SQL服务器。如果MSSQL驱动程序在Android上正常工作是一个完全不同的问题。
这就是你可以做到的。然而,这就是为什么这是一个坏主意。
您正在将SQL服务器直接暴露给互联网。除非您加密MSSQL服务器和Android设备之间的数据,否则确定的黑客可以相对容易地嗅探设备和MSSQL之间的TDS数据流并对其进行反向工程并窃取您的数据。加密可能会使攻击者几乎不可能更难以窃取您的数据。但是,攻击者仍然可以直接对您的数据库发起DOS / DDOS攻击。 不是个好主意!
如果您计划连接其他移动设备(iPhone,Symbian,BlackBerry等),您还需要能够从这些设备创建SQL连接。例如,iPhone本身不支持Java(来自我的内存),所以你需要找到一种方法将iPhone连接到SQL服务器。黑莓手机可能会更容易,但Symbian会让你失望。因此,您需要为连接到数据库的每个设备创建一个自定义解决方案。 糟糕的想法负担维护
创建可以操作数据库的Web服务或自定义TCP / IP服务器。从您的设备连接到此Web服务/服务。 Web服务是要走的路。如今,超过90%的设备本身都能够进行网络服务呼叫。
答案 1 :(得分:4)
我认为你必须使用webservice与SQL数据库进行通信。您可以在该Web服务中定义一般方法,如runSomeScalarQuery或runOneTabularQuery和...,并通过自定义协议(如自定义对象)发送数据库响应。
答案 2 :(得分:0)
这是一种非常糟糕的做法,但如果您需要它用于测试目的,或者由于您没有任何其他选项,它仍然可以连接到外部数据库。如果数据访问不是太重,它在大多数情况下都能正常工作。
一旦准备就绪,我们可以继续编程。我们知道,Android迫使我们在一个单独的线程中进行网络访问,因此我们必须选择一种创建Thread的方法,例如我们可以使用AsynkTask
,并将我们的代码添加到{{1方法。
doInBackground