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); }
Android通过Webservice操作sqlserver数据库的相关知识,就给大家介绍这么多,后续还会给大家介绍相关知识,希望大家持续关注本站,谢谢。
赞 (0)