• Android通过webservice对sqlserver数据库进行操作


    首页在AndroidManifest.xml中添加访问数据库权限

    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.INTERNET" />

    在src中新建一个连接webservice的类,名字随意,这里叫做“HttpConnSoap”。基本上这个类是固定的,要改的大多数就是webservice端口地址,具体代码如下:

    package com.example.hospital;//名字要改成自己的包名

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;

    import org.xmlpull.v1.XmlPullParser;
    import android.util.Xml;

    public class HttpConnSoap {
    public ArrayList<String> GetWebServre(String methodName,ArrayList<String> Parameters,ArrayList<String>ParValues)
    {
    ArrayList<String> Values=new ArrayList<String>();
    String ServerUrl="http://10.0.2.2:8093/Service1.asmx";//网友要改的大多数就是这里。
    //String soapAction="http://tempuri.org/LongUserId1";
    String soapAction="http://tempuri.org/"+methodName;
    String data="";
    String soap = "<?xml version="1.0" encoding="utf-8"?>"
    + "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
    +"<soap:Body />";
    String tps,vps,ts;
    String mreakString="";
    mreakString="<"+methodName+" xmlns="http://tempuri.org/">";
    for ( int i = 0; i < Parameters.size(); i++) {
    tps=Parameters.get(i).toString();
    //设置该方法的参数为.net webService中的参数名称
    vps=ParValues.get(i).toString();
    ts="<"+tps+">"+vps+"</"+tps+">";
    mreakString=mreakString+ts;
    }
    mreakString=mreakString+"</"+methodName+">";
    /*
    +"<HelloWorld xmlns="http://tempuri.org/">"
    +"<x>string11661</x>"
    +"<SF1>string111</SF1>"
    + "</HelloWorld>"
    */
    String soap2="</soap:Envelope>";
    String requestData=soap+mreakString+soap2;
    System.out.println(requestData);

    try{
    URL url =new URL(ServerUrl);
    HttpURLConnection con=(HttpURLConnection)url.openConnection();
    byte[] bytes=requestData.getBytes("utf-8");
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setUseCaches(false);
    con.setConnectTimeout(8000);// 设置超时时间
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
    con.setRequestProperty("SOAPAction",soapAction);
    con.setRequestProperty("Content-Length",""+bytes.length);
    OutputStream outStream=con.getOutputStream();
    outStream.write(bytes);
    outStream.flush();
    outStream.close();
    InputStream inStream=con.getInputStream();

    //data=parser(inStream);
    //System.out.print("11");
    Values= inputStreamtovaluelist(inStream,methodName);
    //System.out.println(Values.size());
    return Values;

    }
    catch(Exception e)
    {
    System.out.print("2221");
    return null;
    }
    }
    public ArrayList<String> inputStreamtovaluelist (InputStream in,String MonthsName) throws IOException {
    StringBuffer out = new StringBuffer();
    String s1="";
    byte[] b = new byte[4096];
    ArrayList<String> Values=new ArrayList<String>();
    Values.clear();
    for (int n; (n = in.read(b)) != -1;) {
    s1=new String(b, 0, n);
    out.append(s1);
    }
    System.out.println(out);
    String[] s13=s1.split("><");
    String ifString=MonthsName+"Result";
    String TS="";
    String vs="";

    Boolean getValueBoolean=false;
    for(int i=0;i<s13.length;i++){
    TS=s13[i];
    System.out.println(TS);
    int j,k,l;
    j=TS.indexOf(ifString);
    k=TS.lastIndexOf(ifString);

    if (j>=0)
    {
    System.out.println(j);
    if (getValueBoolean==false)
    {
    getValueBoolean=true;
    }
    else {

    }

    if ((j>=0)&&(k>j))
    {
    System.out.println("FFF"+TS.lastIndexOf("/"+ifString));
    //System.out.println(TS);
    l=ifString.length()+1;
    vs=TS.substring(j+l,k-2);
    //System.out.println("fff"+vs);
    Values.add(vs);
    System.out.println("退出"+vs);
    getValueBoolean=false;
    return Values;
    }

    }
    if (TS.lastIndexOf("/"+ifString)>=0)
    {
    getValueBoolean=false;
    return Values;
    }
    if ((getValueBoolean)&&(TS.lastIndexOf("/"+ifString)<0)&&(j<0))
    {
    k=TS.length();
    //System.out.println(TS);
    vs=TS.substring(7,k-8);
    //System.out.println("f"+vs);
    Values.add(vs);
    }

    }

    return Values;
    }

    }

     需要新建一个数据库访问类,通过HttpConnSoap这个类和底层数据库进行通信,操作。这里新建的方法要和你新建webservice时一致,我的webservice是用vs2010,.net 3.5框架搭建的。这里列举两个方法,写法大概就是这样的,网友写的时候要根据自己的需求来写就好了。

    public class DBUtil
    {
    static boolean feeflag=false;
    ArrayList<String> arrayList=new ArrayList<String>();
    ArrayList<String> brrayList=new ArrayList<String>();
    ArrayList<String> crrayList=new ArrayList<String>();
    HttpConnSoap Soaptest=new HttpConnSoap();
    public static Connection getConnection()
    {
    Connection con=null;
    try
    {
    System.out.println("111");
    Class.forName("org.gjt.mm.mysql.Driver");
    System.out.println("222");
    con=DriverManager.getConnection("jdbc:mysql://192.168.0.100:3306/test?useUnicode=true&characterEncoding=UTF-8","root","123456");
    System.out.println("333");
    }
    catch(Exception e)
    {
    System.out.println("444");
    e.printStackTrace();
    }
    return con;
    }

    //查询学生信息
    public String[] selectStu(String StuNO)
    {
    String ss[]=new String[8];
    String result=null;
    arrayList.clear();
    brrayList.clear();
    crrayList.clear();
    arrayList.add("StuNO");
    brrayList.add(StuNO);
    crrayList=Soaptest.GetWebServre("selectStu", arrayList, brrayList);
    ss[0]=crrayList.get(0);
    ss[1]=crrayList.get(1);
    ss[2]=crrayList.get(2);
    ss[3]=crrayList.get(3);
    ss[4]=crrayList.get(4);
    ss[5]=crrayList.get(5);
    ss[6]=crrayList.get(6);
    ss[7]=crrayList.get(7);
    return ss;

    }

    public List<HashMap<String, String>> selectStuAll() {
    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

    arrayList.clear();
    brrayList.clear();
    crrayList.clear();

    crrayList = Soaptest.GetWebServre("selectStuAll", arrayList, brrayList);

    /*HashMap<String, String> tempHash = new HashMap<String, String>();
    tempHash.put("S_Name", "姓名");
    tempHash.put("S_Age", "年龄");
    tempHash.put("S_Sex", "性别");
    list.add(tempHash);*/

    for (int j = 0; j < crrayList.size(); j += 3) {
    HashMap<String, String> hashMap = new HashMap<String, String>();
    hashMap.put("S_Name", crrayList.get(j));
    hashMap.put("S_Age", crrayList.get(j + 1));
    hashMap.put("S_Sex", crrayList.get(j + 2));
    list.add(hashMap);
    }

    return list;
    }

    }

     下面就是Android程序中调用了,这里用listview显示数据

    private ListView listView;
    private DBUtil dbUtil;
    private SimpleAdapter adapter;

    private void setListView() {

    List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

    list = dbUtil.selectStuAll();

    adapter = new SimpleAdapter(
    DayList.this,
    list,
    R.layout.adapter,
    new String[] { "S_Name", "S_Age", "S_Sex" },
    new int[] { R.id.textView1, R.id.textView2, R.id.textView3 });

    listView.setAdapter(adapter);

    }

  • 相关阅读:
    kafka学习笔记:知识点整理
    ZooKeeper基本原理
    Channel详解
    redis十-对快照模式分析
    文字两行显示
    vue 脚手架创建新项目时报错 ERROR Failed to get response from http://registry.cnpmjs.org/vue-cli-version
    checkbox 点选后没有被选中,有点击事件,不显示小勾
    git 提示 没有操作权限
    HBuilder X 提示Setting.json格式语法错误
    格式化代码时提示错误
  • 原文地址:https://www.cnblogs.com/hyyweb/p/5132714.html
Copyright © 2020-2023  润新知