前两天,公司有一个利用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操作(包括增删改查)的实例!!已在真机上试验通过的更多相关文章

  1. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  2. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  3. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

  4. 利用Hibernate 框架,实现对数据库的增删改查

    增: package com.maya.test; import org.hibernate.*; import org.hibernate.cfg.*; import com.maya.model. ...

  5. 完成在本机远程连接HBase进行数据增删改查

    1.进行hbase与本机远程连接测试连接 1.1 修改虚拟机文件hbase-site.xml(cd/usr/local/hbase/conf)文件,把localhost换成你的虚拟机主机名字 1.2修 ...

  6. SpringMVC4+Hibernate5+SQLServer 2014 整合(包括增删改查分页)

    前言 前面整合完了SpringMVC+MyBatis,自然也少不了SpringMVC+Hibernate,严格来说Hibernate才是我们真正想要的ORM框架么.只记得最初学习hibernate时, ...

  7. 初识hibernate框架之一:进行简单的增删改查操作

    Hibernate的优势 l 优秀的Java 持久化层解决方案  (DAO) l 主流的对象—关系映射工具产品 l 简化了JDBC 繁琐的编码 l 将数据库的连接信息都存放在配置文件 l 自己的ORM ...

  8. SqlServer存储过程(增删改查)

    * IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...

  9. SOD框架的Model、连接数据库及增删改查

    using PWMIS.DataMap.Entity; using System; using System.Collections.Generic; using System.Linq; using ...

随机推荐

  1. MAC X OS 自定义分辨率

    1 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 2 3 将该文件修改成如下内容: 4 5 <key>G ...

  2. 基于visual Studio2013解决C语言竞赛题之0518回文数

     题目

  3. Android Dialog详解

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  4. Reverse Words in a String | LeetCode OJ | C++

    我的思路:先读取每一个单词,存放到容器中:读取完毕后,将容器中的单词倒序写入输出中. #include<iostream> #include<string> #include& ...

  5. Triangle---minimum path sum

    动态规划 class Solution: # @param triangle, a list of lists of integers # @return an integer def minimum ...

  6. BZOJ 3631: [JLOI2014]松鼠的新家( 树链剖分 )

    裸树链剖分... ------------------------------------------------------------------- #include<bits/stdc++ ...

  7. 手机访问php环境移动端静态页面

    痛点 在做一个移动端H5页面,手机要调试访问,不方便.就想说能不能手机连接电脑的php项目,进行调试修改. 需要 手机要跟电脑同处在同个局域网中,公司的话一般是局域网,实在没有的话花个20块买个随身W ...

  8. android switch语句case expressions must be constant expressions

    在项目中遇到这样的Exception:case expressions must be constant expressions public class StandingCityActivity e ...

  9. jsp截取字符串

    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> < ...

  10. 基于visual Studio2013解决C语言竞赛题之0902文件查找

       题目