Android通過webservice連接SQLServer 詳細教程(數據庫+服務器+客戶端)

轉載出處 http://blog.csdn.net/zhyl8157121/article/details/8169172


               本教程有五個部分:

  • 項目說明
  • 開發環境部署
  • 數據庫設計
  • 服務器端程序設計
  • 客戶端(android端)程序設計

項目說明

         這個項目意在實現一個簡單的android連接Sqlserver的功能。

         就做一個簡單的庫存管理功能,包括對倉庫內現有貨物的查看、貨物信息的增加&刪除。

開發環境的部署

         今天主要講解第一個部分,開發環境的部署.

操作系統:Windows764bit 旗艦版

         當然這個是什麼基本無所謂,只是我是在這上面開發的,不過家庭普通版的貌似不能配置IIS,就是咱們後面要使用的一個服務.

android端:eclipse + ADT集成開發環境

         相信看到這個教程的基本都知道如何做這些了.如果真的是有哪位同學android開發環境沒有配置好而來看這篇教程,請先移步->www.google.com

服務器端:VisualStudio 2010 旗艦版

         這個是用來寫website/webservice的,開發語言使用C# (即.net)

數據庫:SQLServer2008 R2

         其實這個是什麼版本也無所謂吧,教程使用的都是比較基本的東西,所以版本的差異基本可以忽略。

IIS 7.5:正確配置並開啓IIS服務

         如果想將website/webservice發佈出去就要開啓這個服務。但是如果僅僅是在本地進行測試就不需要配置,直接在VS中運行就可以。

 

         其實我在開發的時候也只是配置IIS的時候遇到了一些問題,這裏給出IIS的配置方法.

         http://wenku.baidu.com/view/95cf9fd9ad51f01dc281f1af.html這篇文庫給的還是很詳細的,我當初就是照着這個配置的。

數據庫設計

數據庫名稱:StockManage

表設計

表名稱:C

表說明:

列名

中文名稱

數據型態

必填

說明

Cno

貨物編號

Int

V

主鍵,自增

Cname

貨物名稱

String

 

 

Cnum

貨物數量

Int

 

 

 

下圖是設計表的時候的截圖。


 

向表中輸入內容

 

吐槽一下:爲什麼這裏貓、狗、電話都有,甚至還有Surface?!這隻能說當時LZ在想這些……

 

 

服務器端程序設計(Webservice)

         其實服務端可以寫成webservice也可以寫成website,前者只是提供一種服務,而後者是可以提供用戶界面等具體的頁面,後者也就是咱們平時所說的“網站”。

         兩者的區別:

  • Web Service 只提供程序和接口,不提供用戶界面
  • Web Site 提供程序和接口,也提供用戶界面(網頁)

         由於咱們只是需要一箇中介來訪問sqlserver,所以寫成webservice足夠了。

         目標:寫一個Website訪問Sqlserver,獲取數據並轉換成xml格式,然後傳遞給android客戶端。


1.      新建一個Webservice工程


2.      視圖 -> 其它窗口 -> 服務器資源管理器


3.      右鍵數據連接 -> 添加連接


4.      選擇Microsoft Sqlserver


5.      如下圖所示選擇(可以點擊測試連接來檢測連接是否成功,然後點擊確定)


6.      數據庫的查看和編輯也可以在VS中進行了


7.      先查看一下數據庫屬性並記錄下連接屬性


8.      新建一個類DBOperation,代碼如下:

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12. using System.Data.SqlClient;  
  13. using System.Text.RegularExpressions;  
  14. using System.Collections;  
  15. using System.Collections.Generic;  
  16.   
  17. namespace StockManageWebservice  
  18. {  
  19.     /// <summary>   
  20.     /// 一個操作數據庫的類,所有對SQLServer的操作都寫在這個類中,使用的時候實例化一個然後直接調用就可以   
  21.     /// </summary>   
  22.     public class DBOperation:IDisposable  
  23.     {  
  24.         public static SqlConnection sqlCon;  //用於連接數據庫   
  25.   
  26.         //將下面的引號之間的內容換成上面記錄下的屬性中的連接字符串   
  27.         private String ConServerStr = @"Data Source=BOTTLE-PC;Initial Catalog=StockManage;Integrated Security=True";  
  28.           
  29.         //默認構造函數   
  30.         public DBOperation()  
  31.         {  
  32.             if (sqlCon == null)  
  33.             {  
  34.                 sqlCon = new SqlConnection();  
  35.                 sqlCon.ConnectionString = ConServerStr;  
  36.                 sqlCon.Open();  
  37.             }  
  38.         }  
  39.            
  40.         //關閉/銷燬函數,相當於Close()   
  41.         public void Dispose()  
  42.         {  
  43.             if (sqlCon != null)  
  44.             {  
  45.                 sqlCon.Close();  
  46.                 sqlCon = null;  
  47.             }  
  48.         }  
  49.           
  50.         /// <summary>   
  51.         /// 獲取所有貨物的信息   
  52.         /// </summary>   
  53.         /// <returns>所有貨物信息</returns>   
  54.         public List<string> selectAllCargoInfor()  
  55.         {  
  56.             List<string> list = new List<string>();  
  57.   
  58.             try  
  59.             {  
  60.                 string sql = "select * from C";  
  61.                 SqlCommand cmd = new SqlCommand(sql,sqlCon);  
  62.                 SqlDataReader reader = cmd.ExecuteReader();  
  63.   
  64.                 while (reader.Read())  
  65.                 {  
  66.                     //將結果集信息添加到返回向量中   
  67.                     list.Add(reader[0].ToString());  
  68.                     list.Add(reader[1].ToString());  
  69.                     list.Add(reader[2].ToString());  
  70.   
  71.                 }  
  72.   
  73.                 reader.Close();  
  74.                 cmd.Dispose();  
  75.   
  76.             }  
  77.             catch(Exception)  
  78.             {  
  79.   
  80.             }  
  81.             return list;  
  82.         }  
  83.   
  84.         /// <summary>   
  85.         /// 增加一條貨物信息   
  86.         /// </summary>   
  87.         /// <param name="Cname">貨物名稱</param>   
  88.         /// <param name="Cnum">貨物數量</param>   
  89.         public bool insertCargoInfo(string Cname, int Cnum)  
  90.         {  
  91.             try  
  92.             {  
  93.                 string sql = "insert into C (Cname,Cnum) values ('" + Cname + "'," + Cnum + ")";  
  94.                 SqlCommand cmd = new SqlCommand(sql, sqlCon);  
  95.                 cmd.ExecuteNonQuery();  
  96.                 cmd.Dispose();  
  97.   
  98.                 return true;  
  99.             }  
  100.             catch (Exception)  
  101.             {  
  102.                 return false;  
  103.             }  
  104.         }  
  105.   
  106.         /// <summary>   
  107.         /// 刪除一條貨物信息   
  108.         /// </summary>   
  109.         /// <param name="Cno">貨物編號</param>   
  110.         public bool deleteCargoInfo(string Cno)  
  111.         {  
  112.             try  
  113.             {  
  114.                 string sql = "delete from C where Cno=" + Cno;  
  115.                 SqlCommand cmd = new SqlCommand(sql, sqlCon);  
  116.                 cmd.ExecuteNonQuery();  
  117.                 cmd.Dispose();  
  118.   
  119.                 return true;  
  120.             }  
  121.             catch (Exception)  
  122.             {  
  123.                 return false;  
  124.             }  
  125.         }  
  126.     }  
  127. }  
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;

namespace StockManageWebservice
{
    /// <summary>
    /// 一個操作數據庫的類,所有對SQLServer的操作都寫在這個類中,使用的時候實例化一個然後直接調用就可以
    /// </summary>
    public class DBOperation:IDisposable
    {
        public static SqlConnection sqlCon;  //用於連接數據庫

        //將下面的引號之間的內容換成上面記錄下的屬性中的連接字符串
        private String ConServerStr = @"Data Source=BOTTLE-PC;Initial Catalog=StockManage;Integrated Security=True";
        
        //默認構造函數
        public DBOperation()
        {
            if (sqlCon == null)
            {
                sqlCon = new SqlConnection();
                sqlCon.ConnectionString = ConServerStr;
                sqlCon.Open();
            }
        }
         
        //關閉/銷燬函數,相當於Close()
        public void Dispose()
        {
            if (sqlCon != null)
            {
                sqlCon.Close();
                sqlCon = null;
            }
        }
        
        /// <summary>
        /// 獲取所有貨物的信息
        /// </summary>
        /// <returns>所有貨物信息</returns>
        public List<string> selectAllCargoInfor()
        {
            List<string> list = new List<string>();

            try
            {
                string sql = "select * from C";
                SqlCommand cmd = new SqlCommand(sql,sqlCon);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    //將結果集信息添加到返回向量中
                    list.Add(reader[0].ToString());
                    list.Add(reader[1].ToString());
                    list.Add(reader[2].ToString());

                }

                reader.Close();
                cmd.Dispose();

            }
            catch(Exception)
            {

            }
            return list;
        }

        /// <summary>
        /// 增加一條貨物信息
        /// </summary>
        /// <param name="Cname">貨物名稱</param>
        /// <param name="Cnum">貨物數量</param>
        public bool insertCargoInfo(string Cname, int Cnum)
        {
            try
            {
                string sql = "insert into C (Cname,Cnum) values ('" + Cname + "'," + Cnum + ")";
                SqlCommand cmd = new SqlCommand(sql, sqlCon);
                cmd.ExecuteNonQuery();
                cmd.Dispose();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// 刪除一條貨物信息
        /// </summary>
        /// <param name="Cno">貨物編號</param>
        public bool deleteCargoInfo(string Cno)
        {
            try
            {
                string sql = "delete from C where Cno=" + Cno;
                SqlCommand cmd = new SqlCommand(sql, sqlCon);
                cmd.ExecuteNonQuery();
                cmd.Dispose();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }
}

9.      修改Service1.asmx.cs代碼如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace StockManageWebservice  
  8. {  
  9.     /// <summary>   
  10.     /// Service1 的摘要說明   
  11.     /// </summary>   
  12.     [WebService(Namespace = "http://tempuri.org/")]  
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14.     [System.ComponentModel.ToolboxItem(false)]  
  15.     // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的註釋。   
  16.     // [System.Web.Script.Services.ScriptService]   
  17.     public class Service1 : System.Web.Services.WebService  
  18.     {  
  19.         DBOperation dbOperation = new DBOperation();  
  20.   
  21.         [WebMethod]  
  22.         public string HelloWorld()  
  23.         {  
  24.             return "Hello World";  
  25.         }  
  26.   
  27.         [WebMethod(Description = "獲取所有貨物的信息")]  
  28.         public string[] selectAllCargoInfor()  
  29.         {  
  30.             return dbOperation.selectAllCargoInfor().ToArray();  
  31.         }  
  32.   
  33.         [WebMethod(Description = "增加一條貨物信息")]  
  34.         public bool insertCargoInfo(string Cname, int Cnum)  
  35.         {  
  36.             return dbOperation.insertCargoInfo(Cname, Cnum);  
  37.         }  
  38.   
  39.         [WebMethod(Description = "刪除一條貨物信息")]  
  40.         public bool deleteCargoInfo(string Cno)  
  41.         {  
  42.             return dbOperation.deleteCargoInfo(Cno);  
  43.         }  
  44.     }  
  45. }  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace StockManageWebservice
{
    /// <summary>
    /// Service1 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的註釋。
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        DBOperation dbOperation = new DBOperation();

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod(Description = "獲取所有貨物的信息")]
        public string[] selectAllCargoInfor()
        {
            return dbOperation.selectAllCargoInfor().ToArray();
        }

        [WebMethod(Description = "增加一條貨物信息")]
        public bool insertCargoInfo(string Cname, int Cnum)
        {
            return dbOperation.insertCargoInfo(Cname, Cnum);
        }

        [WebMethod(Description = "刪除一條貨物信息")]
        public bool deleteCargoInfo(string Cno)
        {
            return dbOperation.deleteCargoInfo(Cno);
        }
    }
}


10.      運行程序(F5),會自動打開一個瀏覽器,可以看到如下畫面:


11.  選擇相應的功能並傳遞參數可以實現調試從瀏覽器中調試程序:

下圖選擇的是增加一條貨物信息



12.  程序執行的結果:


13.另,記住這裏的端口名,後面android的程序中添入的端口號就是這個:



客戶端(android端)程序設計

程序代碼:

1.MainActivity

  1. package com.bottle.stockmanage;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. import android.app.Activity;  
  8. import android.app.Dialog;  
  9. import android.os.Bundle;  
  10. import android.view.Gravity;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.view.Window;  
  14. import android.view.WindowManager;  
  15. import android.widget.Button;  
  16. import android.widget.EditText;  
  17. import android.widget.ListView;  
  18. import android.widget.SimpleAdapter;  
  19. import android.widget.Toast;  
  20.   
  21. public class MainActivity extends Activity{  
  22.   
  23.     private Button btn1;  
  24.     private Button btn2;  
  25.     private Button btn3;  
  26.     private ListView listView;  
  27.     private SimpleAdapter adapter;  
  28.     private DBUtil dbUtil;  
  29.   
  30.     @Override  
  31.     public void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_main);  
  34.   
  35.         btn1 = (Button) findViewById(R.id.btn_all);  
  36.         btn2 = (Button) findViewById(R.id.btn_add);  
  37.         btn3 = (Button) findViewById(R.id.btn_delete);  
  38.         listView = (ListView) findViewById(R.id.listView);  
  39.         dbUtil = new DBUtil();  
  40.           
  41.         btn1.setOnClickListener(new OnClickListener() {  
  42.               
  43.             @Override  
  44.             public void onClick(View v) {  
  45.                 hideButton(true);  
  46.                 setListView();  
  47.             }  
  48.         });  
  49.   
  50.         btn2.setOnClickListener(new OnClickListener() {  
  51.               
  52.             @Override  
  53.             public void onClick(View v) {  
  54.                 hideButton(true);  
  55.                 setAddDialog();  
  56.             }  
  57.         });  
  58.   
  59.         btn3.setOnClickListener(new OnClickListener() {  
  60.               
  61.             @Override  
  62.             public void onClick(View v) {  
  63.                 hideButton(true);  
  64.                 setDeleteDialog();  
  65.             }  
  66.         });  
  67.     }  
  68.   
  69.     /** 
  70.      * 設置彈出刪除對話框 
  71.      */  
  72.     private void setDeleteDialog() {  
  73.           
  74.         final Dialog dialog = new Dialog(MainActivity.this);  
  75.         dialog.setContentView(R.layout.dialog_delete);  
  76.         dialog.setTitle("輸入想要刪除的貨物的編號");  
  77.         Window dialogWindow = dialog.getWindow();  
  78.         WindowManager.LayoutParams lp = dialogWindow.getAttributes();  
  79.         dialogWindow.setGravity(Gravity.CENTER);  
  80.         dialogWindow.setAttributes(lp);  
  81.   
  82.         final EditText cNoEditText = (EditText) dialog.findViewById(R.id.editText1);  
  83.         Button btnConfirm = (Button) dialog.findViewById(R.id.button1);  
  84.         Button btnCancel = (Button) dialog.findViewById(R.id.button2);  
  85.   
  86.         btnConfirm.setOnClickListener(new OnClickListener() {  
  87.   
  88.             @Override  
  89.             public void onClick(View v) {  
  90.                 dbUtil.deleteCargoInfo(cNoEditText.getText().toString());  
  91.                 dialog.dismiss();  
  92.                 hideButton(false);  
  93.                 Toast.makeText(MainActivity.this"成功刪除數據", Toast.LENGTH_SHORT).show();  
  94.             }  
  95.         });  
  96.   
  97.         btnCancel.setOnClickListener(new OnClickListener() {  
  98.   
  99.             @Override  
  100.             public void onClick(View v) {  
  101.                 dialog.dismiss();  
  102.                 hideButton(false);  
  103.             }  
  104.         });  
  105.           
  106.         dialog.show();  
  107.     }  
  108.   
  109.     /** 
  110.      * 設置彈出添加對話框 
  111.      */  
  112.     private void setAddDialog() {  
  113.   
  114.         final Dialog dialog = new Dialog(MainActivity.this);  
  115.         dialog.setContentView(R.layout.dialog_add);  
  116.         dialog.setTitle("輸入添加的貨物的信息");  
  117.         Window dialogWindow = dialog.getWindow();  
  118.         WindowManager.LayoutParams lp = dialogWindow.getAttributes();  
  119.         dialogWindow.setGravity(Gravity.CENTER);  
  120.         dialogWindow.setAttributes(lp);  
  121.   
  122.         final EditText cNameEditText = (EditText) dialog.findViewById(R.id.editText1);  
  123.         final EditText cNumEditText = (EditText) dialog.findViewById(R.id.editText2);  
  124.         Button btnConfirm = (Button) dialog.findViewById(R.id.button1);  
  125.         Button btnCancel = (Button) dialog.findViewById(R.id.button2);  
  126.   
  127.         btnConfirm.setOnClickListener(new OnClickListener() {  
  128.   
  129.             @Override  
  130.             public void onClick(View v) {  
  131.                   
  132.                 dbUtil.insertCargoInfo(cNameEditText.getText().toString(), cNumEditText.getText().toString());  
  133.                 dialog.dismiss();  
  134.                 hideButton(false);  
  135.                 Toast.makeText(MainActivity.this"成功添加數據", Toast.LENGTH_SHORT).show();  
  136.             }  
  137.         });  
  138.   
  139.         btnCancel.setOnClickListener(new OnClickListener() {  
  140.   
  141.             @Override  
  142.             public void onClick(View v) {  
  143.                 dialog.dismiss();  
  144.                 hideButton(false);  
  145.             }  
  146.         });  
  147.         dialog.show();  
  148.     }  
  149.   
  150.     /** 
  151.      * 設置listView 
  152.      */  
  153.     private void setListView() {  
  154.   
  155.         listView.setVisibility(View.VISIBLE);  
  156.   
  157.         List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();  
  158.   
  159.         list = dbUtil.getAllInfo();  
  160.   
  161.         adapter = new SimpleAdapter(  
  162.                 MainActivity.this,   
  163.                 list,   
  164.                 R.layout.adapter_item,   
  165.                 new String[] { "Cno""Cname""Cnum" },   
  166.                 new int[] { R.id.txt_Cno, R.id.txt_Cname, R.id.txt_Cnum });  
  167.   
  168.         listView.setAdapter(adapter);  
  169.   
  170.     }  
  171.   
  172.     /** 
  173.      * 設置button的可見性 
  174.      */  
  175.     private void hideButton(boolean result) {  
  176.         if (result) {  
  177.             btn1.setVisibility(View.GONE);  
  178.             btn2.setVisibility(View.GONE);  
  179.             btn3.setVisibility(View.GONE);  
  180.         } else {  
  181.             btn1.setVisibility(View.VISIBLE);  
  182.             btn2.setVisibility(View.VISIBLE);  
  183.             btn3.setVisibility(View.VISIBLE);  
  184.         }  
  185.   
  186.     }  
  187.   
  188.     /** 
  189.      * 返回按鈕的重寫 
  190.      */  
  191.     @Override  
  192.     public void onBackPressed()  
  193.     {  
  194.         if (listView.getVisibility() == View.VISIBLE) {  
  195.             listView.setVisibility(View.GONE);  
  196.             hideButton(false);  
  197.         }else {  
  198.             MainActivity.this.finish();  
  199.         }  
  200.     }  
  201. }  
package com.bottle.stockmanage;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity{

	private Button btn1;
	private Button btn2;
	private Button btn3;
	private ListView listView;
	private SimpleAdapter adapter;
	private DBUtil dbUtil;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btn1 = (Button) findViewById(R.id.btn_all);
		btn2 = (Button) findViewById(R.id.btn_add);
		btn3 = (Button) findViewById(R.id.btn_delete);
		listView = (ListView) findViewById(R.id.listView);
		dbUtil = new DBUtil();
		
		btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				hideButton(true);
				setListView();
			}
		});

		btn2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				hideButton(true);
				setAddDialog();
			}
		});

		btn3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				hideButton(true);
				setDeleteDialog();
			}
		});
	}

	/**
	 * 設置彈出刪除對話框
	 */
	private void setDeleteDialog() {
		
		final Dialog dialog = new Dialog(MainActivity.this);
		dialog.setContentView(R.layout.dialog_delete);
		dialog.setTitle("輸入想要刪除的貨物的編號");
		Window dialogWindow = dialog.getWindow();
		WindowManager.LayoutParams lp = dialogWindow.getAttributes();
		dialogWindow.setGravity(Gravity.CENTER);
		dialogWindow.setAttributes(lp);

		final EditText cNoEditText = (EditText) dialog.findViewById(R.id.editText1);
		Button btnConfirm = (Button) dialog.findViewById(R.id.button1);
		Button btnCancel = (Button) dialog.findViewById(R.id.button2);

		btnConfirm.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				dbUtil.deleteCargoInfo(cNoEditText.getText().toString());
				dialog.dismiss();
				hideButton(false);
				Toast.makeText(MainActivity.this, "成功刪除數據", Toast.LENGTH_SHORT).show();
			}
		});

		btnCancel.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				dialog.dismiss();
				hideButton(false);
			}
		});
		
		dialog.show();
	}

	/**
	 * 設置彈出添加對話框
	 */
	private void setAddDialog() {

		final Dialog dialog = new Dialog(MainActivity.this);
		dialog.setContentView(R.layout.dialog_add);
		dialog.setTitle("輸入添加的貨物的信息");
		Window dialogWindow = dialog.getWindow();
		WindowManager.LayoutParams lp = dialogWindow.getAttributes();
		dialogWindow.setGravity(Gravity.CENTER);
		dialogWindow.setAttributes(lp);

		final EditText cNameEditText = (EditText) dialog.findViewById(R.id.editText1);
		final EditText cNumEditText = (EditText) dialog.findViewById(R.id.editText2);
		Button btnConfirm = (Button) dialog.findViewById(R.id.button1);
		Button btnCancel = (Button) dialog.findViewById(R.id.button2);

		btnConfirm.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				
				dbUtil.insertCargoInfo(cNameEditText.getText().toString(), cNumEditText.getText().toString());
				dialog.dismiss();
				hideButton(false);
				Toast.makeText(MainActivity.this, "成功添加數據", Toast.LENGTH_SHORT).show();
			}
		});

		btnCancel.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				dialog.dismiss();
				hideButton(false);
			}
		});
		dialog.show();
	}

	/**
	 * 設置listView
	 */
	private void setListView() {

		listView.setVisibility(View.VISIBLE);

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

		list = dbUtil.getAllInfo();

		adapter = new SimpleAdapter(
				MainActivity.this, 
				list, 
				R.layout.adapter_item, 
				new String[] { "Cno", "Cname", "Cnum" }, 
				new int[] { R.id.txt_Cno, R.id.txt_Cname, R.id.txt_Cnum });

		listView.setAdapter(adapter);

	}

	/**
	 * 設置button的可見性
	 */
	private void hideButton(boolean result) {
		if (result) {
			btn1.setVisibility(View.GONE);
			btn2.setVisibility(View.GONE);
			btn3.setVisibility(View.GONE);
		} else {
			btn1.setVisibility(View.VISIBLE);
			btn2.setVisibility(View.VISIBLE);
			btn3.setVisibility(View.VISIBLE);
		}

	}

	/**
	 * 返回按鈕的重寫
	 */
	@Override
	public void onBackPressed()
	{
		if (listView.getVisibility() == View.VISIBLE) {
			listView.setVisibility(View.GONE);
			hideButton(false);
		}else {
			MainActivity.this.finish();
		}
	}
}

2.HttpConnSoap

(改類已經過時,更多請參照

http://blog.csdn.net/zhyl8157121/article/details/8709048)

  1. package com.bottle.stockmanage;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8. import java.util.ArrayList;  
  9.   
  10. public class HttpConnSoap {  
  11.     public ArrayList<String> GetWebServre(String methodName, ArrayList<String> Parameters, ArrayList<String> ParValues) {  
  12.         ArrayList<String> Values = new ArrayList<String>();  
  13.           
  14.         //ServerUrl是指webservice的url   
  15.         //10.0.2.2是讓android模擬器訪問本地(PC)服務器,不能寫成127.0.0.1   
  16.         //11125是指端口號,即掛載到IIS上的時候開啓的端口   
  17.         //Service1.asmx是指提供服務的頁面   
  18.         String ServerUrl = "http://10.0.2.2:11125/Service1.asmx";  
  19.           
  20.         //String soapAction="http://tempuri.org/LongUserId1";   
  21.         String soapAction = "http://tempuri.org/" + methodName;  
  22.         //String data = "";   
  23.         String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"  
  24.                 + "<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/\">"  
  25.                 + "<soap:Body />";  
  26.         String tps, vps, ts;  
  27.         String mreakString = "";  
  28.   
  29.         mreakString = "<" + methodName + " xmlns=\"http://tempuri.org/\">";  
  30.         for (int i = 0; i < Parameters.size(); i++) {  
  31.             tps = Parameters.get(i).toString();  
  32.             //設置該方法的參數爲.net webService中的參數名稱   
  33.             vps = ParValues.get(i).toString();  
  34.             ts = "<" + tps + ">" + vps + "</" + tps + ">";  
  35.             mreakString = mreakString + ts;  
  36.         }  
  37.         mreakString = mreakString + "</" + methodName + ">";  
  38.         /* 
  39.         +"<HelloWorld xmlns=\"http://tempuri.org/\">" 
  40.         +"<x>string11661</x>" 
  41.         +"<SF1>string111</SF1>" 
  42.         + "</HelloWorld>" 
  43.         */  
  44.         String soap2 = "</soap:Envelope>";  
  45.         String requestData = soap + mreakString + soap2;  
  46.         //System.out.println(requestData);   
  47.   
  48.         try {  
  49.             URL url = new URL(ServerUrl);  
  50.             HttpURLConnection con = (HttpURLConnection) url.openConnection();  
  51.             byte[] bytes = requestData.getBytes("utf-8");  
  52.             con.setDoInput(true);  
  53.             con.setDoOutput(true);  
  54.             con.setUseCaches(false);  
  55.             con.setConnectTimeout(6000);// 設置超時時間   
  56.             con.setRequestMethod("POST");  
  57.             con.setRequestProperty("Content-Type""text/xml;charset=utf-8");  
  58.             con.setRequestProperty("SOAPAction", soapAction);  
  59.             con.setRequestProperty("Content-Length""" + bytes.length);  
  60.             OutputStream outStream = con.getOutputStream();  
  61.             outStream.write(bytes);  
  62.             outStream.flush();  
  63.             outStream.close();  
  64.             InputStream inStream = con.getInputStream();  
  65.   
  66.             //data=parser(inStream);   
  67.             //System.out.print("11");   
  68.             Values = inputStreamtovaluelist(inStream, methodName);  
  69.             //System.out.println(Values.size());   
  70.             return Values;  
  71.   
  72.         } catch (Exception e) {  
  73.             System.out.print("2221");  
  74.             return null;  
  75.         }  
  76.     }  
  77.   
  78.     public ArrayList<String> inputStreamtovaluelist(InputStream in, String MonthsName) throws IOException {  
  79.         StringBuffer out = new StringBuffer();  
  80.         String s1 = "";  
  81.         byte[] b = new byte[4096];  
  82.         ArrayList<String> Values = new ArrayList<String>();  
  83.         Values.clear();  
  84.   
  85.         for (int n; (n = in.read(b)) != -1;) {  
  86.             s1 = new String(b, 0, n);  
  87.             out.append(s1);  
  88.         }  
  89.   
  90.         System.out.println(out);  
  91.         String[] s13 = s1.split("><");  
  92.         String ifString = MonthsName + "Result";  
  93.         String TS = "";  
  94.         String vs = "";  
  95.   
  96.         Boolean getValueBoolean = false;  
  97.         for (int i = 0; i < s13.length; i++) {  
  98.             TS = s13[i];  
  99.             System.out.println(TS);  
  100.             int j, k, l;  
  101.             j = TS.indexOf(ifString);  
  102.             k = TS.lastIndexOf(ifString);  
  103.   
  104.             if (j >= 0) {  
  105.                 System.out.println(j);  
  106.                 if (getValueBoolean == false) {  
  107.                     getValueBoolean = true;  
  108.                 } else {  
  109.   
  110.                 }  
  111.   
  112.                 if ((j >= 0) && (k > j)) {  
  113.                     System.out.println("FFF" + TS.lastIndexOf("/" + ifString));  
  114.                     //System.out.println(TS);   
  115.                     l = ifString.length() + 1;  
  116.                     vs = TS.substring(j + l, k - 2);  
  117.                     //System.out.println("fff"+vs);   
  118.                     Values.add(vs);  
  119.                     System.out.println("退出" + vs);  
  120.                     getValueBoolean = false;  
  121.                     return Values;  
  122.                 }  
  123.   
  124.             }  
  125.             if (TS.lastIndexOf("/" + ifString) >= 0) {  
  126.                 getValueBoolean = false;  
  127.                 return Values;  
  128.             }  
  129.             if ((getValueBoolean) && (TS.lastIndexOf("/" + ifString) < 0) && (j < 0)) {  
  130.                 k = TS.length();  
  131.                 //System.out.println(TS);   
  132.                 vs = TS.substring(7, k - 8);  
  133.                 //System.out.println("f"+vs);   
  134.                 Values.add(vs);  
  135.             }  
  136.   
  137.         }  
  138.   
  139.         return Values;  
  140.     }  
  141.   
  142. }  
package com.bottle.stockmanage;

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

public class HttpConnSoap {
	public ArrayList<String> GetWebServre(String methodName, ArrayList<String> Parameters, ArrayList<String> ParValues) {
		ArrayList<String> Values = new ArrayList<String>();
		
		//ServerUrl是指webservice的url
		//10.0.2.2是讓android模擬器訪問本地(PC)服務器,不能寫成127.0.0.1
		//11125是指端口號,即掛載到IIS上的時候開啓的端口
		//Service1.asmx是指提供服務的頁面
		String ServerUrl = "http://10.0.2.2:11125/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(6000);// 設置超時時間
			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;
	}

}

3.DBUtil

  1. package com.bottle.stockmanage;  
  2.   
  3. import java.sql.Connection;  
  4. import java.util.ArrayList;  
  5. import java.util.HashMap;  
  6. import java.util.List;  
  7.   
  8. public class DBUtil {  
  9.     private ArrayList<String> arrayList = new ArrayList<String>();  
  10.     private ArrayList<String> brrayList = new ArrayList<String>();  
  11.     private ArrayList<String> crrayList = new ArrayList<String>();  
  12.     private HttpConnSoap Soap = new HttpConnSoap();  
  13.   
  14.     public static Connection getConnection() {  
  15.         Connection con = null;  
  16.         try {  
  17.             //Class.forName("org.gjt.mm.mysql.Driver");   
  18.             //con=DriverManager.getConnection("jdbc:mysql://192.168.0.106:3306/test?useUnicode=true&characterEncoding=UTF-8","root","initial");                
  19.         } catch (Exception e) {  
  20.             //e.printStackTrace();   
  21.         }  
  22.         return con;  
  23.     }  
  24.   
  25.     /** 
  26.      * 獲取所有貨物的信息 
  27.      *  
  28.      * @return 
  29.      */  
  30.     public List<HashMap<String, String>> getAllInfo() {  
  31.         List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();  
  32.   
  33.         arrayList.clear();  
  34.         brrayList.clear();  
  35.         crrayList.clear();  
  36.   
  37.         crrayList = Soap.GetWebServre("selectAllCargoInfor", arrayList, brrayList);  
  38.   
  39.         HashMap<String, String> tempHash = new HashMap<String, String>();  
  40.         tempHash.put("Cno""Cno");  
  41.         tempHash.put("Cname""Cname");  
  42.         tempHash.put("Cnum""Cnum");  
  43.         list.add(tempHash);  
  44.           
  45.         for (int j = 0; j < crrayList.size(); j += 3) {  
  46.             HashMap<String, String> hashMap = new HashMap<String, String>();  
  47.             hashMap.put("Cno", crrayList.get(j));  
  48.             hashMap.put("Cname", crrayList.get(j + 1));  
  49.             hashMap.put("Cnum", crrayList.get(j + 2));  
  50.             list.add(hashMap);  
  51.         }  
  52.   
  53.         return list;  
  54.     }  
  55.   
  56.     /** 
  57.      * 增加一條貨物信息 
  58.      *  
  59.      * @return 
  60.      */  
  61.     public void insertCargoInfo(String Cname, String Cnum) {  
  62.   
  63.         arrayList.clear();  
  64.         brrayList.clear();  
  65.           
  66.         arrayList.add("Cname");  
  67.         arrayList.add("Cnum");  
  68.         brrayList.add(Cname);  
  69.         brrayList.add(Cnum);  
  70.           
  71.         Soap.GetWebServre("insertCargoInfo", arrayList, brrayList);  
  72.     }  
  73.       
  74.     /** 
  75.      * 刪除一條貨物信息 
  76.      *  
  77.      * @return 
  78.      */  
  79.     public void deleteCargoInfo(String Cno) {  
  80.   
  81.         arrayList.clear();  
  82.         brrayList.clear();  
  83.           
  84.         arrayList.add("Cno");  
  85.         brrayList.add(Cno);  
  86.           
  87.         Soap.GetWebServre("deleteCargoInfo", arrayList, brrayList);  
  88.     }  
  89. }  
package com.bottle.stockmanage;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class DBUtil {
	private ArrayList<String> arrayList = new ArrayList<String>();
	private ArrayList<String> brrayList = new ArrayList<String>();
	private ArrayList<String> crrayList = new ArrayList<String>();
	private HttpConnSoap Soap = new HttpConnSoap();

	public static Connection getConnection() {
		Connection con = null;
		try {
			//Class.forName("org.gjt.mm.mysql.Driver");
			//con=DriverManager.getConnection("jdbc:mysql://192.168.0.106:3306/test?useUnicode=true&characterEncoding=UTF-8","root","initial");  		    
		} catch (Exception e) {
			//e.printStackTrace();
		}
		return con;
	}

	/**
	 * 獲取所有貨物的信息
	 * 
	 * @return
	 */
	public List<HashMap<String, String>> getAllInfo() {
		List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

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

		crrayList = Soap.GetWebServre("selectAllCargoInfor", arrayList, brrayList);

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

		return list;
	}

	/**
	 * 增加一條貨物信息
	 * 
	 * @return
	 */
	public void insertCargoInfo(String Cname, String Cnum) {

		arrayList.clear();
		brrayList.clear();
		
		arrayList.add("Cname");
		arrayList.add("Cnum");
		brrayList.add(Cname);
		brrayList.add(Cnum);
		
		Soap.GetWebServre("insertCargoInfo", arrayList, brrayList);
	}
	
	/**
	 * 刪除一條貨物信息
	 * 
	 * @return
	 */
	public void deleteCargoInfo(String Cno) {

		arrayList.clear();
		brrayList.clear();
		
		arrayList.add("Cno");
		brrayList.add(Cno);
		
		Soap.GetWebServre("deleteCargoInfo", arrayList, brrayList);
	}
}

4.activity_main.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent" >  
  5.   
  6.     <ListView  
  7.         android:id="@+id/listView"  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="fill_parent"  
  10.         android:visibility="gone" >  
  11.     </ListView>  
  12.   
  13.     <Button  
  14.         android:id="@+id/btn_all"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_above="@+id/btn_add"  
  18.         android:layout_alignLeft="@+id/btn_add"  
  19.         android:layout_marginBottom="10dip"  
  20.         android:text="@string/btn1" />  
  21.   
  22.     <Button  
  23.         android:id="@+id/btn_add"  
  24.         android:layout_width="wrap_content"  
  25.         android:layout_height="wrap_content"  
  26.         android:layout_centerHorizontal="true"  
  27.         android:layout_centerVertical="true"  
  28.         android:text="@string/btn2" />  
  29.   
  30.     <Button  
  31.         android:id="@+id/btn_delete"  
  32.         android:layout_width="wrap_content"  
  33.         android:layout_height="wrap_content"  
  34.         android:layout_alignLeft="@+id/btn_add"  
  35.         android:layout_below="@+id/btn_add"  
  36.         android:layout_marginTop="10dip"  
  37.         android:text="@string/btn3" />  
  38.   
  39. </RelativeLayout>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone" >
    </ListView>

    <Button
        android:id="@+id/btn_all"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_add"
        android:layout_alignLeft="@+id/btn_add"
        android:layout_marginBottom="10dip"
        android:text="@string/btn1" />

    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/btn2" />

    <Button
        android:id="@+id/btn_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_add"
        android:layout_below="@+id/btn_add"
        android:layout_marginTop="10dip"
        android:text="@string/btn3" />

</RelativeLayout>

5.adapter_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:descendantFocusability="blocksDescendants"  
  6.     android:gravity="center" >  
  7.   
  8.     <TableRow  
  9.         android:id="@+id/classroom_detail_item_tableRow"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:gravity="center" >  
  13.   
  14.         <TextView  
  15.             android:id="@+id/txt_Cno"  
  16.             android:layout_width="80dp"  
  17.             android:layout_height="wrap_content"  
  18.             android:gravity="center"  
  19.             android:height="40dp"  
  20.             android:textSize="14sp" >  
  21.         </TextView>  
  22.   
  23.         <TextView  
  24.             android:id="@+id/txt_Cname"  
  25.             android:layout_width="80dp"  
  26.             android:layout_height="wrap_content"  
  27.             android:gravity="center"  
  28.             android:height="40dp"  
  29.             android:textSize="14sp" >  
  30.         </TextView>  
  31.   
  32.         <TextView  
  33.             android:id="@+id/txt_Cnum"  
  34.             android:layout_width="80dp"  
  35.             android:layout_height="wrap_content"  
  36.             android:gravity="center"  
  37.             android:height="40dp"  
  38.             android:textSize="14sp" >  
  39.         </TextView>  
  40.   
  41.     </TableRow>  
  42.   
  43. </TableLayout>  
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:gravity="center" >

    <TableRow
        android:id="@+id/classroom_detail_item_tableRow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <TextView
            android:id="@+id/txt_Cno"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:height="40dp"
            android:textSize="14sp" >
        </TextView>

        <TextView
            android:id="@+id/txt_Cname"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:height="40dp"
            android:textSize="14sp" >
        </TextView>

        <TextView
            android:id="@+id/txt_Cnum"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:height="40dp"
            android:textSize="14sp" >
        </TextView>

    </TableRow>

</TableLayout>

6.dialog_add.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <EditText  
  8.         android:id="@+id/editText1"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:ems="10"  
  12.         android:hint="@string/add_hint1" >  
  13.   
  14.         <requestFocus />  
  15.     </EditText>  
  16.   
  17.     <EditText  
  18.         android:id="@+id/editText2"  
  19.         android:layout_width="fill_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:ems="10"  
  22.         android:hint="@string/add_hint2"  
  23.         android:inputType="number" />  
  24.   
  25.     <LinearLayout  
  26.         android:layout_width="fill_parent"  
  27.         android:layout_height="wrap_content"  
  28.         android:orientation="horizontal" >  
  29.   
  30.         <Button  
  31.             android:id="@+id/button1"  
  32.             android:layout_width="100dip"  
  33.             android:layout_height="wrap_content"  
  34.             android:layout_marginLeft="20dip"  
  35.             android:text="@string/confirm" />  
  36.   
  37.         <Button  
  38.             android:id="@+id/button2"  
  39.             android:layout_width="100dip"  
  40.             android:layout_height="wrap_content"  
  41.             android:layout_marginLeft="40dip"  
  42.             android:text="@string/cancel" />  
  43.     </LinearLayout>  
  44.   
  45. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/add_hint1" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/add_hint2"
        android:inputType="number" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:text="@string/confirm" />

        <Button
            android:id="@+id/button2"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dip"
            android:text="@string/cancel" />
    </LinearLayout>

</LinearLayout>

7.dialog_delete.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <EditText  
  8.         android:id="@+id/editText1"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:ems="10"  
  12.         android:hint="@string/delete_hint" >  
  13.   
  14.         <requestFocus />  
  15.     </EditText>  
  16.   
  17.     <LinearLayout  
  18.         android:layout_width="fill_parent"  
  19.         android:layout_height="wrap_content"  
  20.         android:orientation="horizontal" >  
  21.   
  22.         <Button  
  23.             android:id="@+id/button1"  
  24.             android:layout_width="100dip"  
  25.             android:layout_height="wrap_content"  
  26.             android:layout_marginLeft="20dip"  
  27.             android:text="@string/confirm" />  
  28.   
  29.         <Button  
  30.             android:id="@+id/button2"  
  31.             android:layout_width="100dip"  
  32.             android:layout_height="wrap_content"  
  33.             android:layout_marginLeft="40dip"  
  34.             android:text="@string/cancel" />  
  35.     </LinearLayout>  
  36.   
  37. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="@string/delete_hint" >

        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button1"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:text="@string/confirm" />

        <Button
            android:id="@+id/button2"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dip"
            android:text="@string/cancel" />
    </LinearLayout>

</LinearLayout>

8.strings.xml

  1. <resources>  
  2.   
  3.     <string name="app_name">StockManagement</string>  
  4.     <string name="menu_settings">Settings</string>  
  5.     <string name="title_activity_main">MainActivity</string>  
  6.     <string name="btn1">查看所有貨物信息</string>  
  7.     <string name="btn2">增加一條貨物信息</string>  
  8.     <string name="btn3">刪除一條貨物信息</string>  
  9.     <string name="add_hint1">輸入添加的貨物的名稱</string>  
  10.     <string name="add_hint2">輸入貨物的數量</string>  
  11.     <string name="confirm">確定</string>  
  12.     <string name="cancel">取消</string>  
  13.     <string name="delete_hint">輸入刪除的貨物的編號</string>  
  14.   
  15. </resources>  
<resources>

    <string name="app_name">StockManagement</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="btn1">查看所有貨物信息</string>
    <string name="btn2">增加一條貨物信息</string>
    <string name="btn3">刪除一條貨物信息</string>
    <string name="add_hint1">輸入添加的貨物的名稱</string>
    <string name="add_hint2">輸入貨物的數量</string>
    <string name="confirm">確定</string>
    <string name="cancel">取消</string>
    <string name="delete_hint">輸入刪除的貨物的編號</string>

</resources>

9.Manifest.xml

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     package="com.bottle.stockmanage"  
  3.     android:versionCode="1"  
  4.     android:versionName="1.0" >  
  5.   
  6.     <uses-sdk  
  7.         android:minSdkVersion="7"  
  8.         android:targetSdkVersion="15" />  
  9.   
  10.     <uses-permission android:name="android.permission.INTERNET" />  
  11.   
  12.     <application  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@android:style/Theme.NoTitleBar" >  
  16.         <activity  
  17.             android:name=".MainActivity"  
  18.             android:label="@string/title_activity_main"  
  19.             android:screenOrientation="portrait" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.   
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.     </application>  
  27.   
  28. </manifest>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bottle.stockmanage"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

運行程序的效果如下圖所示:






再說一下IIS,如果只是在本地進行測試等操作,是不需要使用到IIS的,但是如果想發佈出去,就要配置一下IIS。

好啦,基本就是這樣了。程序不是完善的,但大概的思路就是這樣,用到的技術也大概就是這幾樣,但是每一樣拿出來都夠學一陣的了。



--->2012.12.02 增加內容

附上本文demo的CSDN下載地址

http://download.csdn.net/detail/zhyl8157121/4836107


--->2013.01.08 增加內容

解釋一下android端如何和webservice通信的。(如何修改實例程序)

具體的更深層的東西已經在HttpSoap中封裝好了,所以大家使用的時候可以直接用這個類就可以了。(我也不懂是怎麼實現的……)

android調用的方法就是如DBUtil中那樣,比如內嵌圖片 2

其中arrayList中和brrayList中分別存放對應的webservice中“selectAllCargoInfor”方法的參數名和參數的值。

內嵌圖片 3

由於webservice中的selectAllCargoInfo方法的參數爲空,所以對應的,android端調用的時候,arrayList和brrayList的值就是空的。


 所以大家在使用的時候,只需要將webservice中的方法寫好,然後寫好DBUtil中的調用參數即可。


--->2013.03.23 增加內容

如果獲取值爲空,可能是返回值是複雜類型造成的,可以參考:http://blog.csdn.net/zhyl8157121/article/details/8709048


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章