`
yesyea
  • 浏览: 2727 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Xfire 实现.net 平台PDA数据交互

阅读更多
做了2天,终于接近尾声了。期间遇到很多问题。下面分享一下 


1、数据查询以xml文件格式的字符串进行数据交互,遍历结果集部分代码如下:
  /**   
    *  @param  ResultSet  rs输入的结果集   
     *  @return  String  返回XML串   
     *  @exception  SQLException   
    */   
    public String GetXML(ResultSet rs) throws SQLException, IOException { 
final StringBuffer buffer = new StringBuffer(1024 * 4); 
buffer.append("<?xml  version=\"1.0\"  encoding=\"UTF-8\"?>\n"); // XML的头部信息 
buffer.append("<RowSet>\n"); 
buffer.append("\t" + GetTableXML(rs, "Table") + "\n"); 
buffer.append("</RowSet>"); 
rs.close(); 
return buffer.toString(); 
}


  /**   
    *  @param  ResultSet  rs输入的结果集   
    *  @return  String  返回XML串   
    */
  
 public String GetTableXML( ResultSet rs,String TableName) throws SQLException, IOException {
    	String xml="";
        final StringBuffer buffer = new StringBuffer(1024 * 4);
       
        if (rs!=null)
        {
        	 ResultSetMetaData rsmd = rs.getMetaData();  //得到结果集的定义结构  
     		int colCount = rsmd.getColumnCount(); // 得到列的总数
     		for (int id = 0; rs.next(); id++) {
     			buffer.append("\t<" + TableName + ">\n");
     			for (int i = 1; i <= colCount; i++) {
     				int type =rsmd.getColumnType(i); // 获取字段类型
     				buffer.append("\t\t<" + rsmd.getColumnName(i) + ">");
     				buffer.append(getValue(rs, i, type));
     				buffer.append("</" + rsmd.getColumnName(i) + ">\n");
     			}
     			buffer.append("\t</" + TableName + ">\n");
     			xml=buffer.toString();
     		}        
             rs.close();
        }
        else if (rs == null || !rs.next())  {
        	System.out.println("结果集为空");
        }
        return xml;
    }
/**   
    *  This  method  gets  the  value  of  the  specified  column   
    *  通用的读取结果集某一列的值并转化为String表达   
    *  @param  ResultSet  rs  输入的纪录集   
    *  @param  int  colNum  第几列   
    *  @param  int  type  数据类型   
    */
//重点
     private String getValue( ResultSet rs, int colNum, int type) throws SQLException, IOException {
    	String xml="";
        switch (type) 
        {
            case Types.ARRAY:
            case Types.BLOB:
            case Types.CLOB:
            case Types.DISTINCT:
            case Types.LONGVARBINARY:
            case Types.VARBINARY:
            case Types.BINARY:
            case Types.REF:
            case Types.STRUCT:
               BufferedInputStream is = null;
            	Blob blob=(Blob) rs.getObject(colNum);
                is = new BufferedInputStream(blob.getBinaryStream());
                byte[] bytes = new byte[(int) blob.length()];
                int offset = 0;
                int read = 0;
                int len = bytes.length;
                while (offset < len&& (read = is.read(bytes, offset, len - offset)) >= 0) {
                	offset += read;
                }
                BASE64Encoder enc=new BASE64Encoder();
                xml=enc.encode(bytes);
                is.close();
            	is = null;
                break;
            default: {
                Object value = rs.getObject(colNum);
                if (rs.wasNull() || (value == null)) {
                    return ("");
                } else {
                    xml=value.toString();
                }
            }
        }
        return xml;
    }

2、web service 接口类
public class OperateImp implements Operate {

	// 执行增删改操作
	public int ExecuteNonQuery(String executeNoQuery) {
		int i = 0;
		try {
			DataBase db = new DataBase();
			Connection con = db.setConnection();
			Statement stmt = con.createStatement();
			Statement stmtUpdate = con.createStatement();
			i = stmtUpdate.executeUpdate(executeNoQuery);
			db.cleanup();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return i;
	}

	// 查询某结果集首条记录的首字段
	public Object ExecuteScalar(String executeScalar) {
		Object scalar = "";
		try {
			DataBase db = new DataBase();
			Connection con = db.setConnection();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(executeScalar);
			while (rs.next()) {
				scalar = rs.getString(1);
			}
			db.cleanup();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return scalar;
	}

	public String ExecuteDataset(String executeDataset) {
		String result = "";
		try {
			DataBase db = new DataBase();
			Connection con = db.setConnection();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(executeDataset);
			XMLWriter xml = new XMLWriter();
			result = xml.GetXML(rs);
			db.cleanup();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	// 图片入库
	public boolean insertXQPIC(String insertXQPIC,byte [] bytes,String pictureId) {
		boolean boo=false;
		
		OutputStream outStream=null;
		try
		{
			DataBase db = new DataBase();
			Connection con = db.setConnection();
			BlobToString bts=new BlobToString();
			con.setAutoCommit(false); // 事物由程序员操作
			Statement st = con.createStatement();
			
		    //插入一个空对象empty_blob()
			st.executeQuery(insertXQPIC);
			//通过pictureId查询刚刚传入的数据
			ResultSet rs = st.executeQuery("select pic from ZKR_XQPIC where picid='"+pictureId+"'  for update");
			if (rs.next()) {
		        BLOB blob = (BLOB) rs.getBlob("pic");
		        outStream = blob.getBinaryOutputStream();
		        //data是传入的byte数组,定义:byte[] data
		        outStream.write(bytes, 0, bytes.length);
		        boo=true;
			}
			 outStream.flush();
			 outStream.close();
			 con.commit();
			 con.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		return boo;
	}

	private byte[] blobToBytes(Blob blob) {
		BufferedInputStream is = null;
		try {
			is = new BufferedInputStream(blob.getBinaryStream());
			byte[] bytes = new byte[(int) blob.length()];
			int len = bytes.length;
			int offset = 0;
			int read = 0;
			while (offset < len&& (read = is.read(bytes, offset, len - offset)) >= 0) {
				offset += read;
			}
			return bytes;
		} catch (Exception e) {
			return null;
		} finally {
			try {
				is.close();
				is = null;
			} catch (IOException e) {
				return null;
			}
		}
	}
}


3、客户端调用
public class ClientMain {
	public static void main(String agp[]) {
		Service serviceModel = new ObjectServiceFactory().create(Operate.class);

		// Create a proxy for the deployed service
		XFire xfire = XFireFactory.newInstance().getXFire();
		XFireProxyFactory factory = new XFireProxyFactory(xfire);
		String serviceUrl = "http://localhost:8080/PDA/services/OperateService";
		Operate client = null;
		try 
		{
			client = (Operate) factory.create(serviceModel, serviceUrl);
		} 
		catch (MalformedURLException e) {
		}
		int serviceResponse =0;
		String  rs=null;
		String scalar=null;
		try {
//			//增删改操作
//			String sql="insert into st_dayev_r values('2','2001-01-01 00:00:00','0','0','222')";
//			String sql="insert into ZKR_XQPIC values('00004',empty_blob(),'20081026','','')";
//			serviceResponse = client.ExecuteNonQuery(sql);
//			System.out.println(serviceResponse);
			
			//查询操作
//			String sqlQuery="select * from ZKR_XQPIC where picid='00004' ";
//			rs=client.ExecuteDataset(sqlQuery);
//			System.out.println(rs);
//			//查询单个字段
//			String sqlscalar="select * from zkr_sfya where yaid='2009010402' ";
//			scalar=(String) client.ExecuteScalar(sqlscalar);
//			System.out.println(scalar);
			
			//插入图片
			String insertXQPIC="insert into ZKR_XQPIC (picid,pic,refid) values('012',empty_blob(),'20081026')";
			byte []bytes=new byte[10];
			String pictureId="012";
			boolean boo=client.insertXQPIC(insertXQPIC, bytes,pictureId);
			System.out.println(boo);


		} catch (Exception e) {
			System.out.println("出错了");
			e.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

    使用XFire实现SOAP的webservice数据传输源码(java)

    首先,我们来看标题中的"使用XFire实现SOAP的webservice数据传输源码"。要创建一个SOAP Web服务,你需要以下步骤: 1. **定义服务接口**:使用Java编程语言定义服务接口,这些接口将代表可供远程调用的方法。 ```...

    xfire实现webservice实例

    XFire是Java平台上一个曾经流行的开源框架,专门用于构建和消费Web服务。本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建...

    xfire实现web service入门实例

    Web服务是一种基于网络的、平台无关的交互方式,它允许不同的系统之间交换数据和服务。Xfire(现更名为CXF)是Java平台上一个流行的开源框架,用于构建和部署Web服务。作为一个初学者,理解如何使用Xfire来实现Web...

    Spring+xFire实现webService

    Spring+xFire 实现 WebService 是一种在 Java 开发中创建和使用 Web 服务的方式,它结合了 Spring 框架的灵活性和 xFire(现在称为 Apache CXF)的 Web 服务功能。以下是对这个技术栈的详细说明: 1. **环境配置**...

    xfire实现的web service应用

    xfire实现的web service应用,空项目,导入即可

    xfire实现Web Service

    Web服务是一种基于网络的、标准化的机制,允许应用程序之间进行交互和数据交换。在Java开发中,XFire是一个流行的框架,用于实现Web服务。本文将详细介绍如何使用XFire在Java中创建和消费Web服务。 首先,理解Web ...

    XFire实现webServices源码

    XFire是Java平台上一个曾经流行的Web服务框架,它提供了一种高效、灵活的方式来创建和消费Web服务。本文将深入探讨XFire如何实现Web服务,并基于提供的源码分析其工作原理。 一、Web服务的基本概念 Web服务基于开放...

    使用xfire实现webservice实例

    XFire是Java平台上一个曾经流行的开源框架,用于实现Web服务。本文将深入探讨如何使用XFire来创建和消费Web服务,以及它的工作原理。 **1. XFire简介** XFire是Apache CXF项目的前身,其主要目标是提供一种简单、高...

    xfire数据同步服务端

    总结,xfire数据同步服务端利用xfire框架的优势,实现了高效、可靠的数据同步功能,为分布式系统间的数据交互提供了强大支持。在实际项目中,根据业务需求,我们还可以结合其他技术,如数据库事务管理、消息队列等,...

    XFire框架实现WebService(二)

    在本篇中,我们将深入探讨如何使用XFire框架来实现Web服务。XFire是一个轻量级的Java Web Service框架,它允许开发者快速、方便地创建和消费SOAP服务。这篇文章可能是系列教程的第二部分,旨在帮助读者理解并掌握...

    Spring XFire 实现webService

    **Spring XFire 实现Web服务** 在Java世界中,Spring框架以其灵活性和强大的功能成为企业级应用开发的首选。而XFire(后被Apache CXF所吸收)则是一款高效的Web服务实现工具,它允许开发者轻松地创建和消费SOAP Web...

    xfire.chm 数据的交互 apacherCXF

    数据的交互 前台后台数据交互,web开发的必备工具

    webService 之 xFire 实现流程

    Web服务是一种基于互联网的、平台无关的应用程序接口,它通过标准的XML(可扩展标记语言)进行数据交换,允许不同的应用系统之间进行交互。主要技术包括SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI...

    xfire实现webService服务端与客户端使用说明

    掌握Xfire的使用,能够有效地提高Web服务开发的效率,简化跨平台数据交互的复杂性。尽管本文只是一个基础的记录,但对于初学者来说,已经足够了解Xfire的基本工作原理和操作流程。随着对Web服务和Xfire理解的深入,...

    使用 .NET 调用有自定义 Handler 验证的 XFire Web 服务

    XFire 是一款已不再更新的游戏社交平台,但这里可能是以它为例来探讨 Web 服务的交互。 首先,.NET Framework 提供了一套完整的工具和类库,用于开发 Web 应用程序和服务。在 .NET 中,Web 服务通常通过 SOAP...

    xfire webservice实现附件上传

    本文将深入探讨如何利用XFire实现附件上传功能,这对于构建支持文件交互的Web应用至关重要。 首先,我们需要了解XFire的基础知识。XFire(现已被Apache CXF项目合并)是一个基于Java的开源Web服务框架,它利用了...

    WebService(二):XFire实现WebService

    **如何使用XFire实现WebService:** 1. **创建服务接口**:首先,定义一个Java接口,包含你希望暴露为Web服务的方法。 2. **实现服务接口**:编写实现该接口的类,提供具体业务逻辑。 3. **配置XFire**:通过XML...

    xfire实现的webservies

    【标题】:“xfire实现的Web服务” 在IT领域,Web服务是一种允许应用程序之间进行通信的方式,它基于开放标准,如XML(可扩展标记语言)和WSDL(Web服务描述语言)。Xfire是一款古老的Java库,它简化了构建和消费...

    xfire-webservice数据格式及集成spring

    此外,XFire还支持其他数据格式,如JSON,这在与JavaScript交互或构建RESTful API时非常有用。 4. **XFire与Spring的集成** Spring是一个全面的企业级应用开发框架,提供依赖注入、AOP(面向切面编程)等功能。...

    xfire实现webservice的例子

    【xfire实现Web服务的例子】 Web服务是一种基于标准的、平台无关的方式,使得应用程序能够通过互联网进行通信。在Java世界中,XFire是早期流行的Web服务框架,它简化了创建和消费Web服务的过程。XFire利用Java注解...

Global site tag (gtag.js) - Google Analytics