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 ...
随机推荐
- MAC X OS 自定义分辨率
1 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 2 3 将该文件修改成如下内容: 4 5 <key>G ...
- 基于visual Studio2013解决C语言竞赛题之0518回文数
题目
- Android Dialog详解
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Reverse Words in a String | LeetCode OJ | C++
我的思路:先读取每一个单词,存放到容器中:读取完毕后,将容器中的单词倒序写入输出中. #include<iostream> #include<string> #include& ...
- Triangle---minimum path sum
动态规划 class Solution: # @param triangle, a list of lists of integers # @return an integer def minimum ...
- BZOJ 3631: [JLOI2014]松鼠的新家( 树链剖分 )
裸树链剖分... ------------------------------------------------------------------- #include<bits/stdc++ ...
- 手机访问php环境移动端静态页面
痛点 在做一个移动端H5页面,手机要调试访问,不方便.就想说能不能手机连接电脑的php项目,进行调试修改. 需要 手机要跟电脑同处在同个局域网中,公司的话一般是局域网,实在没有的话花个20块买个随身W ...
- android switch语句case expressions must be constant expressions
在项目中遇到这样的Exception:case expressions must be constant expressions public class StandingCityActivity e ...
- jsp截取字符串
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> < ...
- 基于visual Studio2013解决C语言竞赛题之0902文件查找
题目