android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
前两天,公司有一个利用android远程操作sqlserver的项目,对此我是毫无头绪的,但也挺感兴趣的,于是开始上网搜索方法,网上有挺多方法了,发现使用webservice的挺多的,不过我对这些技术一点了解都没有,最后也决定用webservice+xfire做,花了几天的时间赶写了一个demo,终于就就在刚刚完工了,想起来写的东西不多,但是解决各种小错误也花了挺多时间,现在也仍然有个没有解决的问题,在文章后面会提到,还希望有会的大侠指点下。最终实现用到的工具:sqlserver+xfire+tomcat+android,下面我大概介绍一下这个小demo吧。注:因为以前对相关知识不了解,所以大概的原理知道,很多细节的东西不是很清楚,其中可能有些说的不对的地方,还望高手指出,万分感谢!
这个demo主要实现的是通过android客户端对sqlserver数据库的增删改查功能,要做的项目说到底也就是这些基本功能,只不过涉及了复杂的业务逻辑处理,这个小demo算得上是解决了一大半的技术难题。实现分为两个方面,一方面是服务器端,主要是连接sqlserver进行交互,另一方面是客户端,通过android发送请求与服务器端进行交互进而与数据库交互。下面介绍下它的功能,(因为只是做个测试,所以界面就随便做了下,挺难看的,谅解谅解
^ ^):
第一个功能就是登陆功能
第二个功能是查询所有用户信息,显示在listview中。
第三个功能是新增用户功能。
第四个功能是修改用户功能。
第五个功能是删除用户功能。
服务端控制台打印信息:
因为代码的内容实在太多,所以本文主要介绍下大概的框架以及一些需要注意的地方,算是给大家参考参考,同时也是做个笔记,以后在遇到类似的项目可以重复使用。
首先看看数据库表的结构,如下图
其中id为primary key,自增1,name和pwd不能为空
一、服务端:
开发工具用的eclipse,需要引入xfire的jar包,项目的结构图如下:
注:本项目为dynamic web project
需要注意的地方:
1、导入xfire要用的jar包,把xfire-all-1.2.6.jar以及lib下的所有jar包加入到项目的....\WebContent\WEB-INF\lib路径下
2、导入sqlserver驱动jar包,这个地方比较麻烦,因为sqlserver2000和2005是有区别的,本例使用的2005,引入的是一个jar包,如果是2000的话需要引入三个jar包,在源码的文档里有相应的注释。
3、在eclipse里安装好tomcat插件,为了不使篇幅太长,相关操作将另行发文章,不过这个一般都会。
4、项目中的IUser.aegis.xml文件
引用网友的解释:在写webservice接口的时候,通常大家都会定义一些方法的参数,但是根据xfire的xsd文件描述情况来看,它的参数命名通常是in0,in1等等,一次类推,很不友好。
按照XFire-Spring生成的WSDL文档中接口参数名极不友好:
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="1" name="in1" nillable="true" type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="1" name="in2" nillable="true" type="xsd:string" />
<xsd:element maxOccurs="1" minOccurs="1" name="in3" nillable="true" type="xsd:string" />
大家都知道,作为一个合格的程序员,在写代码的时候方法参数命名什么的要尽量做到见名知意,显然他这种风格是不适合我们的。因此我们要创新,这就有了下文。
如何自动将in0与in1替换成友好的参数名称呢 ?
方法如下:
在与接口类同一包下面建一个接口类名称.aegis.xml 的文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="settleMessage">
<parameter index="0" mappedName="id" />
<parameter index="1" mappedName="username" />
<parameter index="2" mappedName="password" />
</method>
</mapping>
</mappings>
注意:
name为接口中方法名称
index为方法中第一个参数
mappedName为替换后的名称
该XML文件的位置一定要与你定义的webservice的接口位于同一个目录(包下)否则不起作用
5、services.xml
需要在这儿注册service以及其实现类和命名空间。
6、完成后把项目部署到tomcat服务器,然后启动服务器输入如下地址(注:我的tomcat端口号改为8888了,所以此地址只是作为参考)http://localhost:8888/hysoftServer/services,如果出现下面所示的页面基本上就算是成功了
二、android客户端
开发工具也是eclipse,项目结构图如下:
需要注意的地方:
1、引入ksoap2的jar包本例使用的是ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar,这儿有一个值得注意的地方,引入后还要勾选下图的地方,这儿耽误了我不少时间,进入方法右击项目build path--configure build path
2、记得在AndroidManifest.xml中加入联网权限,<uses-permission android:name="android.permission.INTERNET"/>
3、MyWebServiceHelper,这是最重要的一个类了,负责与服务器的交互,其中有几个参数需要注意下
参数targetNameSpace 与 服务器端services.xml中指定的命名空间(<namespace></namespace>)标签一致
参数WSDL为"http://服务器ip地址/服务器端项目名/services/MyService"
其他地方参考源代码中的注释,在做这个demo的时候遇到过很多问题,将总结完后将另行发博客说明,在此我有个一直没解决的问题,希望会的高手给个例子。新增用户功能我刚开始是准备使用User对象做参数的,但是后来报错了,上网查了下,说是自己定义的对象不能当参数传,需要经过其他处理,也试了几种方法,都没成功,最后倒是看到一个网友的回答如下:
如果谁有好的办法还望指点下。
本文所使用的源代码以及需要使用到的jar包都传到本人的资源里了,有需要的可以去下载!
jar包包括:所有用到的jar包 4类
1、xfire(n多个) --webservice框架用到的
2、sqlserver驱动 (3个)--连接sqlserver数据库用到的
3、ksoap2-android-assembly-2.6.5-jar-with-dep(1个)
注:jar包路径最好别含中文
android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过的更多相关文章
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)
近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...
- SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)
前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...
- 利用Hibernate 框架,实现对数据库的增删改查
增: package com.maya.test; import org.hibernate.*; import org.hibernate.cfg.*; import com.maya.model. ...
- 完成在本机远程连接HBase进行数据增删改查
1.进行hbase与本机远程连接测试连接 1.1 修改虚拟机文件hbase-site.xml(cd/usr/local/hbase/conf)文件,把localhost换成你的虚拟机主机名字 1.2修 ...
- SpringMVC4+Hibernate5+SQLServer 2014 整合(包括增删改查分页)
前言 前面整合完了SpringMVC+MyBatis,自然也少不了SpringMVC+Hibernate,严格来说Hibernate才是我们真正想要的ORM框架么.只记得最初学习hibernate时, ...
- 初识hibernate框架之一:进行简单的增删改查操作
Hibernate的优势 l 优秀的Java 持久化层解决方案 (DAO) l 主流的对象—关系映射工具产品 l 简化了JDBC 繁琐的编码 l 将数据库的连接信息都存放在配置文件 l 自己的ORM ...
- SqlServer存储过程(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
- SOD框架的Model、连接数据库及增删改查
using PWMIS.DataMap.Entity; using System; using System.Collections.Generic; using System.Linq; using ...
随机推荐
- Spring MVC整体处理流程
一.spring整体结构 首先俯视一下spring mvc的整体结构 二.处理流程 1.请求处理的第一站就是DispatcherServlet.它是整个spring mvc的控制核心.与大多数的jav ...
- POJ1273 最大流 EK算法
套了个EK的模板 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdi ...
- 分享,iOS国家手机区号代码.plist
APP注册需要手机号码的时候,如果有在其他国家的时候需要填写手机区号 一份有国家名字和区号的plist 参照微信注册的时候 格式是 <Array> <Array> <Ar ...
- vc++窗口的创建过程(MFC消息机制的经典文章)
一.什么是窗口类 在Windows中运行的程序,大多数都有一个或几个可以看得见的窗口,而在这些窗口被创建起来之前,操作系统怎么知道该怎样创建该窗口,以及用户操作该窗口的各种消息交给谁处理呢?所以VC ...
- 一步一步重写 CodeIgniter 框架 (8) —— 视图的嵌套输出与返回
视图函数在控制器中通过 $this->load-view() 来调用,从而输出 html,有时候为了调试或附加处理的需要,我们需要打印出这些输出,而不是直接通过浏览器输出,这在 php 中是通过 ...
- Dockerfile指令总结
指令的一般格式为INSTRUCTION arguments,指令包含FROM.MAINTAINER.RUN等. FROM 格式为FROM <image>或FROM <image> ...
- 你跟大牛之间仅仅差一个google
google在中国被墙的厉害,http://209.116.186.231/ 这个地址能够訪问google.另外.有VPN或者某个奇妙的浏览器也能够. 非技术人员,还能够凑合着用百度,可是技术人员必须 ...
- Android FindMyPhone功能模块的实现
类似iPhone手机上面“查找我的iPhone” 1. 手机定位 需要考虑到国内和国外,国内使用百度地图,国外使用google地图,两种地图,属于不同的坐标系. 手机这边为了避免不同坐标系的问题,直接 ...
- Robot Framework与Web界面自动化测试学习笔记:如何判断单选框的选中状态
单选按钮是个常见的html元素,在网页中往往提供一组单选按钮来做选项. 这样在自动化测试用例中需要判断当前选中的按钮是否与预期的一直. 可以这样来操作: ${value} Get Element ...
- 有关oppo蝴蝶解锁的三D技术
oppo手机的界面设计也是很漂亮的.在很多界面中使用了3D技术塑造出了大量华丽的效果.在蝴蝶解锁中使用了两个对称的三D变幻,宛如蝴蝶翅膀上美丽的花纹.在受到用户点击后,随风缓慢上下扇动,充满浪漫的动感 ...