Android通過webservice對sqlserver資料庫進行操作

来源:http://www.cnblogs.com/hyyweb/archive/2016/01/15/5132714.html
-Advertisement-
Play Games

首頁在AndroidManifest.xml中添加訪問資料庫許可權 在src中新建一個連接webservice的類,名字隨意,這裡叫做“HttpConnSoap”。基本上這個類是固定的,要改的大多數就是webservice埠地址,具體代碼如下:package com.example.hospi...


首頁在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);

}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、進入這個網站,註冊並且登錄 https://dt.testbird.com/login/2、選擇 雲手機 3、選擇需要租用的手機 4、點擊 遠程調試 5、在本地電腦的dos 命令視窗,輸入兩條 adb 命令提示符,沒有出錯的話,會提醒鏈接成功。6、在Android studio 裡面就可以運.....
  • 如圖是效果圖 我在下麵定義3個按鈕來實現3個fragment的切換(不過寫完後發現應該定義成RadioGroup的顏色好改變)通過這3個fragment來看看fragment的生命周期和切換時Fragment都會重新實例化 1 先看下第一種方法用的是FragmentTransaction andr....
  • 在用戶使用app過程中,會產生各種各樣的事件,iOS中的事件可以分為3大類型:UIKit可識別三種類型的輸入事件:觸摸事件 加速計事件 /運動事件遠程式控制制事件UIResponder - 響應者對象概念:在iOS中不是任何對象都能處理事件,只有繼承了UIResponder的對象才能接收並處理事件。成員...
  • KVC的使用通常情況下,我們都是通過屬性或者定義存取方法來對實例變數進行存取,但是除此之外,我們也可以通過Key-Value-Coding(KVC)鍵值編碼來存取的實例變數的值。使用KVC過程:首先,我們定義一個Person類,代碼如下:/**Person.h*/#import @interface...
  • 在info.plist文件中添加下麵是後臺播放音頻的完整測試代碼:引入文件//後臺播放音頻設置 AVAudioSession *session = [AVAudioSession sharedInstance]; [session setActive:YES error:nil]; [sess...
  • 用linearlayout完成這樣的佈局效果,這樣的佈局還是比較常用的,具體的xml代碼如下: ...
  • hybrid app Hybrid App(混合模式移動應用)是指介於web-app、native-app這兩者之間的app,兼具“Native App良好用戶交互體驗的優勢”和“Web App跨平臺開發的優勢”。簡介編輯“雲”時代的來臨正在改變App和運營團隊之間的關係,一場不能避免的變革正在進....
  • 從當前activity中獲取et 表單中的值,並跳轉到myactivity.java所綁定的xml佈局文件上。private EditText et;Intent intent=new Intent(MainActivity.this,myactivity.class); String str...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...