Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将android应用程序连接到sql server数据库_Android_Sql_Jdbc_Connection_Jtds - Fatal编程技术网

将android应用程序连接到sql server数据库

将android应用程序连接到sql server数据库,android,sql,jdbc,connection,jtds,Android,Sql,Jdbc,Connection,Jtds,我对java和android编程相当陌生。 我正在尝试将android应用程序连接到安装在Windows笔记本电脑上的SQL Server数据库 我在全网搜索,找到了很多解决方案,但没有成功。 我的情况如下: Error: null 我正在Windows下使用ADT编程 我直接在Galaxy S3(Jelly Bean 4.1.2)上运行应用程序 应用程序只有一个按钮“连接到数据库” 代码如下(放在MainActivity.java中): 我以以下方式添加了两次jtds-1.2.5.ja

我对java和android编程相当陌生。 我正在尝试将android应用程序连接到安装在Windows笔记本电脑上的SQL Server数据库

我在全网搜索,找到了很多解决方案,但没有成功。 我的情况如下:

Error: null
  • 我正在Windows下使用ADT编程
  • 我直接在Galaxy S3(Jelly Bean 4.1.2)上运行应用程序
  • 应用程序只有一个按钮“连接到数据库”
  • 代码如下(放在MainActivity.java中):

我以以下方式添加了两次jtds-1.2.5.jar

  • 在包资源管理器下,右键单击应用程序名称
  • 生成路径\添加外部存档
  • 手动搜索jtds-1.2.5.jar文件,确认
然后:

  • 手动复制jtds-1.2.5.jar文件
  • 在PackageExplorer下,右键单击libs目录
  • 粘贴
在我的笔记本电脑上,SQL浏览器服务已启用,端口1433已正确打开,windows防火墙服务已禁用。我可以从另一台电脑正常连接到我的数据库

我正在使用Connectify与android设备共享笔记本电脑的互联网连接。通过笔记本电脑,我可以成功地敲击智能手机。我还使用另一台笔记本电脑尝试了这种配置,没有出现问题

当我按下“连接到数据库”按钮时,我收到以下错误消息:

Intent error: Network error IOException: socked failed: EACCES (Permission denied)
我在网上搜索,找到了这个解决方案。将internet权限放入清单文件:

<uses-permission android:name="android.permission.INTERNET"/>
有人能帮我吗

提前谢谢


编辑

我认为应用程序正确加载了JDBC驱动程序。应用程序在尝试连接到SQL数据库时引发异常。只要我尝试连接到\SQLEXPRESS数据库,我就更改了connectionstring,如下所示:

Connection DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://12.34.56.78:1433/DatabaseName;user=myusername;password=mypassword;instance=SQLEXPRESS")
如果我离开“istance=SQLEXPRESS”,应用程序将抛出以下SQLException

"Unable to get information from SQL Server: 12.34.56.78."
如果我从连接管柱上取下距离,我收到的错误如下:

Error: null

有什么想法吗(

这可能与此无关(因为我从未尝试/听说直接从android应用程序访问sql数据库)但为什么不为数据库创建一个web服务呢?因为数据库位于主机上而不是手机存储卡上,所以最终需要创建一个web服务,以便应用程序可以访问数据库。

在具有sql的计算机上,还应检查是否启用了所有类型的连接,而不仅仅是命名管道。第一种方法是应该可以。如果没有,请尝试从更多建议中改进代码。这部分连接花费了我整整一周的时间。sql server express的默认设置是仅使用命名管道。您还应该在连接字符串上添加

    Network Library=DBMSSOCN;

密码后。这将告诉sql server使用TCP而不是命名管道。可能您的第一个代码很好。我尝试了很多东西和很多代码,我只需要添加一些东西。如果不指定连接模式,远程连接将失败。只有本地连接可以工作。

请尝试:在DriverManager.getConne之前行动

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
碰撞 这篇文章有更新吗

p、 s:我刚才看到服务器名后面缺少一个“;”分号

连接DbConn= getConnection(“jdbc:jtds:sqlserver://12.34.56.78:1433/ DatabaseName;user=myusername;password=mypassword”)


这可能是导致错误的原因吗?

MainActivity的第74行是否包含以下内容:Class.forName(“net.sourceforge.jtds.jdbc.Driver”).newInstance();?如果是,那么问题是找不到驱动程序net.sourceforge.jtds.jdbc.driver。也就是说,问题不在于建立连接,而在于定位驱动程序。不,第74行是异常管理(在catch语句中,我忘了在代码中发布它)。在catch中,我只放了:Toast.makeText(这是“错误”:+e.getMessage().toString(),Toast.LENGTH_LONG).show();就是这样,如果我在“捕获”中取消错误管理,应用程序不会崩溃。但我仍然没有SQL连接:(没有连接意味着DbConn为空,对吗?当我努力制作FireBird android驱动程序时,驱动程序总是返回一些正常的异常消息(例如“未找到服务器”)。我怀疑错误处理-似乎在第74行引发了null异常。可能e.getMessage()为null,因此调用.toString()失败。更安全的做法是使用:“错误:”+e.getMessage()-它不会在null上崩溃。很简单。我去掉了“.toString()”,现在我没有崩溃,只是“错误:null”正如你所说。我仍然不明白为什么connectionstring和驱动程序设置不起作用。看看这个:但是,我认为直接公开数据库不是一个好的做法。
    Network Library=DBMSSOCN;
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);