Android通过WebService远程访问SQLServer数据库配置

时间:2022-12-28 16:18:55

配置http://blog.csdn.net/zhyl8157121/article/details/8169172该帖子中的WebService,代码见http://blog.csdn.net/haoxingfeng/article/details/9111105。

上面两个帖子里面代码本机运行完全没有问题。

1. 配置IIS(每个版本都差不多)

网上很多了,随便粘一个:http://jingyan.baidu.com/article/eb9f7b6d9e73d1869364e8d8.html。

注:不管win7还是win10必须是旗舰版/专业版,家庭版没有这功能。

2. 发布WebService(VS2010)

在例程Demo/StockManageWebservie工程里面先建立一个数据库文件(服务器资源管理器窗口-右击数据连接-添加连接-SQL数据库文件-起名字-确定),如图(因为没安装独立的SQL Server,只是用的VS自带的SQL Server Express,所以使用windows身份验证)

Android通过WebService远程访问SQLServer数据库配置

按照原帖要求建立表(Cno设置为主键,递增)。Cname字符型,Cnum整型。

Android通过WebService远程访问SQLServer数据库配置

将数据的库的链接字符串拷贝到DBOperation.cs里面,F5运行即可打开网页实现对数据库的控制。 Android通过WebService远程访问SQLServer数据库配置
这里的网址可以看出是本地的地址,这个webservice是由VS提供的,只能本地访问。 Android通过WebService远程访问SQLServer数据库配置
然后右击C#项目,选发布,点文件系统,选一个电脑上的位置,比如E:\StockManage,会自动生成文件夹和文件 Android通过WebService远程访问SQLServer数据库配置
Android通过WebService远程访问SQLServer数据库配置

3. 配置IIS+WebService

把IIS路径配置好,端口号配置好,默认文档增加service1.asmx。启动服务

Android通过WebService远程访问SQLServer数据库配置Android通过WebService远程访问SQLServer数据库配置Android通过WebService远程访问SQLServer数据库配置

4.将路由器端口号与本机IP绑定。这样外网访问就配置好了,可以通过外网IP:11125来访问SQL

Android通过WebService远程访问SQLServer数据库配置

Android通过WebService远程访问SQLServer数据库配置    Android通过WebService远程访问SQLServer数据库配置

5.修改Android程序。在httpconnsoap.java里修改连接字符串,这里的需要设置成外网IP,其他的代码都不需要修改,原作者已经写好。

Android通过WebService远程访问SQLServer数据库配置

6.可以通过Android程序访问WebService了

Android通过WebService远程访问SQLServer数据库配置  Android通过WebService远程访问SQLServer数据库配置


FAQ:

1.WebService发布的时候遇到的问题:“尝试为文件 C:\XXX\XXX.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中

原因是数据库文件位置变化或者无法打开,解决方法:

1)发布的位置不要放在windows用户的文件夹下,可能有权限问题。

2)断开VS与SQL文件的连接。关闭后数据连接会显示一个差。

Android通过WebService远程访问SQLServer数据库配置

3)打包发布SQL设置里面不要修改(不读取Web.config文件里面的连接字符串)。

Android通过WebService远程访问SQLServer数据库配置

2.发布完WebService后,通过IIS只能本地访问,远程访问出现错误。“测试窗体只能用于来自本地计算机的请求”

解决方法:
      在web.config的<system.web></system.web>中间加入如下配置节内容
[html] view plain copy print?
  
  
  1. <webServices>  
  2.         <protocols>  
  3.            <add name="HttpSoap"/>  
  4.            <add name="HttpPost"/>  
  5.            <add name="HttpGet"/>  
  6.            <add name="Documentation"/>  
  7.         </protocols>  
  8. </webServices>  
3. Android程序运行时,执行getOutputStream()时出现“ NetworkOnMainThreadException”错误,在Android2.2以上版本中出现,提示不要在主线程中访问网络,这个问题网上有很多种解决方法,例如: http://blog.csdn.net/wdxpg123/article/details/25291191。

程序测试运行时最简单的修改方法:在AndroidManifest.xml文件中,把minSdkVersion的版本设置为小于8,android:targetSdkVersion="15"一句直接删掉,让eclipse认为android运行版本不高于8。不推荐发布使用。

Android通过WebService远程访问SQLServer数据库配置

4.还遇到了IIS和VS的framework版本不兼容的问题,把VS和IIS都改成4.0就可以了。

Android通过WebService远程访问SQLServer数据库配置  Android通过WebService远程访问SQLServer数据库配置