- 浏览: 434867 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weiwu83:
为什么我在手机内访问127.0.0.1访问不了呀
NanoHttpd 构建android 手机端的HttpServer -
jiae:
为啥我的插入语句乱码? 但是可以插入数据库 然后复制你 ...
SQLite3 在应用启动时初始化数据 -
lichenxiao77:
...
android 连接远程数据库 -
林源滔:
为什么我make clobber之后第一次执行make 可以。 ...
No rule to make target `out/target/common/obj/JAVA_LIBRARIES/bouncycastle_in -
cn23snyga:
new String(str.getBytes("I ...
android 平台上SQLite3中文乱码 --我的小bug
想实现一个功能即让android访问远程数据库,但是网上很多人都不建议直连。据说问题多多。那么中间就加个第三者吧。
实现思路:在数据库和android客户端添加一个webservice,处理每次客户端发来的请求。而在android客户端使用ksoap2解析webservice返回的数据。
一 webservice 端,我使用序列化的方式实现的。不知道这里跟xml的实现哪个对手机来说更好。这里先放下,以后研究。
1.我使用的是xfire。新建一个webservice项目,然后我们开始写代码
2.一个接口
public interface ICompany { public List<Company> getCompanyList(); }
3一个实现类
public class ICompanyImp implements ICompany { CompanyDAO comdao=new CompanyDAO(); //得到所有公司列表 public List<Company> getCompanyList() { List<Company> list=new ArrayList<Company>(); try { list=comdao.getCompanyList(); } catch (SQLException e) { e.printStackTrace(); list=null; } return list; } }
注意: 我这里的返回值是list,不少webservice的基本类型,所以需要为它配置文件 接口+.aegis.xml
4 接口+.aegis.xml
<?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping> <!-- <method name="getCollectionsRowCount"> <parameter index="0" componentType="java.lang.String"/> </method> --> <!-- 返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分 --> <method name="getCompanyList"> <return-type componentType="bean.Company"/> </method> </mapping> </mappings>
5.service.xml
<?xml version="1.0" encoding="UTF-8"?> <beans > <service xmlns="http://xfire.codehaus.org/config/1.0" xmlns:s="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <name>MyService</name> <serviceClass>main.service.ICompany</serviceClass> <implementationClass>main.service.ICompanyImp</implementationClass> <style mce_bogus="1">wrapped</style> <use>literal</use> <scope>application</scope> <namespace>http://android.googlepages.com/</namespace> </service> </beans>
发布项目后,运行效果如图:
项目结构:
二 android客户端
因为ksoap2解析webservice得到的数据类似于以下:getCompanyListResponse{out=anyType{Company=anyType{company=安徽江淮汽车股份有限公司; id=1; }; }; }
1 解析类:MyWebServiceHelper
public class MyWebServiceHelper { // WSDL文档中的命名空间 private static final String targetNameSpace = "http://android.googlepages.com/"; // WSDL文档中的URL private static final String WSDL = "http://192.168.1.144:8080/oilservice/services/MyService"; // 需要调用的方法名(获得Myervices中的helloWorld方法) //需要调用的方法名(获得Myervices中的login方法) private static final String getCompany="getCompanyList"; public List<Company> getCompanyList( ) { List<Company> list=new ArrayList<Company>(); SoapObject request =new SoapObject(targetNameSpace,getCompany); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = false; envelope.setOutputSoapObject(request); AndroidHttpTransport httpTranstation = new AndroidHttpTransport (WSDL); try { httpTranstation.call(targetNameSpace+getCompany, envelope); SoapObject soapObject = (SoapObject) envelope.getResponse(); //如果获取的是个集合,就对它进行下面的操作 if(soapObject.getName()=="anyType") { //遍历Web Service获得的集合 for(int i=0;i<soapObject.getPropertyCount();i++){ Company m=new Company(); //获取单条的数据 SoapObject soapChilds =(SoapObject)soapObject.getProperty(i); //对单个的数据进行再次遍历,把它的每行数据读取出来 m.setId(Integer.parseInt(soapChilds.getProperty("id").toString())); m.setCompany(soapChilds.getProperty("company").toString()); /* //获取实体类的所有属性 Field[] field = m.getClass().getDeclaredFields(); //遍历所有属性,第一个是序列化的id,serialVersionUID,用不到。 for(int j=0 ; j<field.length ; j++){ //获取属性的名字 String name = field[j].getName(); System.out.println(name); }*/ // } list.add(m); } } } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return list; } }
2 实现类:
public class OilActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.company); ArrayAdapter<String> adapter = new ArrayAdapter<String>( this,android.R.layout.simple_spinner_item); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); //调用自已写的webService MyWebServiceHelper webServiceHelper=new MyWebServiceHelper(); List<Company> compnayList= webServiceHelper.getCompanyList(); for(int i=0;i<compnayList.size();i++){ adapter.add(compnayList.get(i).getCompany()); } spinner.setAdapter(adapter); } }
3 两个项目中都用到的bean
public class Company implements Serializable{ private static final long serialVersionUID = 1L; private int id; private String company; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } }
最后测试以下,list返回正确。效果图:
3项目结构:
参考文章:
http://ksoap2.sourceforge.net/doc/api/ ksoap2的API
http://topic.csdn.net/u/20110412/16/0341626d-8576-4dda-b9e4-aab3ff50c980.html 关于list处理的帖子
http://blog.csdn.net/haha_mingg/article/details/6338332,总的思路的实现。在此感谢作者的无私奉献
android 初学,愿与大家相互交流。共同进步。
- oilservice.rar (672.9 KB)
- 下载次数: 509
- oil.rar (173.8 KB)
- 下载次数: 421
发表评论
-
Android.mk文件解析
2016-01-27 14:01 918以 tools/tradefederation/Androi ... -
NanoHttpd 构建android 手机端的HttpServer
2015-10-20 16:24 2929NanoHttpd是Github上的一个开源项目, 通过下载 ... -
permission denial : android.permission.INTERACT_ACROSS_USERS_FULL
2015-08-05 16:50 5038在android5.0上运行 Runtime.getRun ... -
android getprop() 和 java System.getPropety()
2015-06-04 14:39 63401 System.getPropety()是java中的方 ... -
android cts测试相关
2015-05-27 17:38 0example: -
android uiautomator 相关
2015-05-15 16:53 16891 Runtime.getRuntime().exec 启 ... -
android UI test Espresso
2015-04-10 18:31 1196google android UI测试工具 espresso ... -
android 安全(转)
2014-12-26 12:37 719一 如何不被反编译解析1防止反编译工具的反编译 查看 ... -
nexus related
2014-12-17 15:29 7341 nexus drivers https://deve ... -
git related
2014-12-17 15:24 9601 see all detailed git info ... -
ubuntu android studio 配置和使用
2014-12-10 17:34 3623Ubuntu 64位,Android studio 的安装, ... -
eclipse+ADT+android配置相关
2014-12-05 16:40 14441 eclipse 过旧时,ant 运行不了,会报sdk. ... -
anroid 开发小知识点
2014-10-09 09:52 8191 1)代码 获取APK安装路径和包名 L ... -
androird 内存泄露 浅析
2013-06-19 17:52 1439主要是记录工作中出 ... -
java层堆栈调用的打印
2012-12-26 15:14 44641. 在指定的函数内打印相关java调用 Log.d ... -
sms AT指令返回错误代码: CMS errors & CME errors 的区别!
2012-10-26 18:35 12004CMS的是短信中心的返回错误。 CME 是设备返 ... -
sms 发送 radio log
2012-10-26 17:25 4062发送短信:radio.log 关键字 :SEND_SMS ... -
SQLite --函数
2012-09-03 18:22 1970一、日期和时间函数:原文地址SQLite主要支持以下 ... -
Low memory killer
2012-08-09 11:47 16141,引入原因 Android是一个多任务系统,也 ... -
OTA 文档地址 及开发
2012-07-06 13:18 1723[OTA]制作OTA短信来配置手机与服务器同步 ...
相关推荐
android连接远程数据库通过webservice
标题与描述中的知识点:“android连接远程数据库PHP+MYSQL” 在这个主题下,我们主要探讨的是如何让Android应用通过PHP脚本连接并操作远程MySQL数据库。这是一个常见的应用场景,尤其是在移动应用开发中,当应用...
Android连接远程数据库.pdf
本项目着重讲解如何使用基于Android的地图源码连接远程数据库,实现定位、查询以及将坐标数据上传到服务器并计算路径。这涉及到多个技术点,包括Android SDK中的Google Maps API、多线程处理、数据库操作以及网络...
- **网络连接**:通过WiFi或移动网络,Android应用可以通过HTTP、FTP或其他网络协议与远程服务器上的数据库进行通信。 2. **SQLite数据库**: - Android系统内置了SQLite数据库,它是轻量级的关系型数据库,适合...
本教程将探讨如何在Android应用中实现远程连接到MySQL数据库。标题"android远程连接MYSQL数据库"暗示了我们将讨论这一关键技能。 首先,我们要知道Android系统本身并不支持直接连接到MySQL数据库,因为Android设备...
在Android应用开发中,访问远程数据库是一项关键技能,尤其对于构建跨平台、实时同步的应用来说。虽然Android系统本身并不直接支持远程数据库的访问,但可以通过多种方式实现这一目标。本篇将详细探讨如何在Android...
在Android应用开发中,直接与远程数据库交互可能会面临多种挑战,包括安全性、性能以及网络通信的复杂性。为了解决这些问题,通常会采用中间件作为桥梁,以简化数据交换过程。这里的"Android实现远程数据库的服务端...
在Android平台上连接MySQL数据库是一项常见的任务...总之,实现Android连接MySQL数据库需要理解网络请求、数据序列化、后台处理等多个环节,并确保数据安全和用户体验。通过持续学习和实践,你将能够熟练掌握这个过程。
不过,值得注意的是,由于Android应用直接访问远程数据库可能引发安全问题,因此在生产环境中,通常推荐使用更安全的云数据库服务,如Firebase Realtime Database或Firestore,或者自建的RESTful API。
在Android Studio中连接MySQL数据库与在Eclipse中的过程有所不同,主要因为Android是运行在设备或模拟器上,而这些环境通常不具备直接连接远程数据库的能力。为了解决这个问题,我们需要使用额外的技术和注意事项。...
总结起来,"android连接本地mysql数据库实现增删查改-毕业设计项目"是一个涵盖Android网络通信、数据库操作、后端服务开发等多个技术领域的综合实践。它涉及到Android应用与远程服务器的交互,以及通过RESTful API...
在Android应用开发中,有时需要实现远程连接到MySQL数据库进行数据交互。这通常涉及到网络编程、数据库连接管理和特定的数据库驱动。在这个场景中,我们关注的是"Android 远程连接mysql 驱动 8.0.29",这意味着我们...
总之,通过这个"android 连接mysql数据库jar包",开发者可以在Android应用中实现与MySQL数据库的通信,从而实现数据的远程存储和检索,增强应用的功能和灵活性。但是,需要注意网络操作的复杂性,以及对用户隐私和...
这个过程通常涉及客户端(Android应用)、服务器以及远程数据库三者之间的交互。由于Android系统本身并不直接支持远程数据库的直接访问,因此我们需要采取一些间接手段来实现这一目标。 本文将介绍一种常见的解决...
本实例将详细介绍如何在Android中连接和操作数据库,以及如何通过Web服务与远程数据库进行通信。首先,让我们了解一下Android数据库系统的基础。 Android使用SQLite作为其内置的轻量级数据库系统,它非常适合移动...
本项目"Android实现登陆注册连接数据库操作完整代码"提供了完整的源代码,涵盖了从用户界面设计到数据库交互的整个流程。接下来,我们将详细讨论这个项目中涉及的关键知识点。 1. **用户界面(UI)设计**: - 使用...