Android通过webservice连接sqlserver数据库

教程会拿一个具体的例子来讲,一步一步来,也许细节上还可以继续加工,但大致的流程就是这样的。

         本教程有五个部分:

  • 项目说明
  • 开发环境部署
  • 数据库设计
  • 服务器端程序设计
  • 客户端(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.     /// <summary> 
  19.     /// 一个操作数据库的类,所有对SQLServer的操作都写在这个类中,使用的时候实例化一个然后直接调用就可以 
  20.     /// </summary> 
  21.     public class DBOperation:IDisposable 
  22.     { 
  23.         public static SqlConnection sqlCon; //用于连接数据库 
  24.  
  25.         //将下面的引号之间的内容换成上面记录下的属性中的连接字符串 
  26.         private String ConServerStr = @"Data Source=BOTTLE-PC;Initial Catalog=StockManage;Integrated Security=True"
  27.          
  28.         //默认构造函数 
  29.         public DBOperation() 
  30.         { 
  31.             if (sqlCon == null
  32.             { 
  33.                 sqlCon = new SqlConnection(); 
  34.                 sqlCon.ConnectionString = ConServerStr; 
  35.                 sqlCon.Open(); 
  36.             } 
  37.         } 
  38.           
  39.         //关闭/销毁函数,相当于Close() 
  40.         public void Dispose() 
  41.         { 
  42.             if (sqlCon !=null
  43.             { 
  44.                 sqlCon.Close(); 
  45.                 sqlCon = null
  46.             } 
  47.         } 
  48.          
  49.         /// <summary> 
  50.         /// 获取所有货物的信息 
  51.         /// </summary> 
  52.         /// <returns>所有货物信息</returns> 
  53.         public List<string> selectAllCargoInfor() 
  54.         { 
  55.             List<string> list = new List<string>(); 
  56.  
  57.             try 
  58.             { 
  59.                 string sql = "select * from C"
  60.                 SqlCommand cmd = new SqlCommand(sql,sqlCon); 
  61.                 SqlDataReader reader = cmd.ExecuteReader(); 
  62.  
  63.                 while (reader.Read()) 
  64.                 { 
  65.                     //将结果集信息添加到返回向量中 
  66.                     list.Add(reader[0].ToString()); 
  67.                     list.Add(reader[1].ToString()); 
  68.                     list.Add(reader[2].ToString()); 
  69.  
  70.                 } 
  71.  
  72.                 reader.Close(); 
  73.                 cmd.Dispose(); 
  74.  
  75.             } 
  76.             catch(Exception) 
  77.             { 
  78.  
  79.             } 
  80.             return list; 
  81.         } 
  82.  
  83.         /// <summary> 
  84.         /// 增加一条货物信息 
  85.         /// </summary> 
  86.         /// <param name="Cname">货物名称</param> 
  87.         /// <param name="Cnum">货物数量</param> 
  88.         public bool insertCargoInfo(string Cname,int Cnum) 
  89.         { 
  90.             try 
  91.             { 
  92.                 string sql ="insert into C (Cname,Cnum) values ('" + Cname +"'," + Cnum + ")"
  93.                 SqlCommand cmd = new SqlCommand(sql, sqlCon); 
  94.                 cmd.ExecuteNonQuery(); 
  95.                 cmd.Dispose(); 
  96.  
  97.                 return true
  98.             } 
  99.             catch (Exception) 
  100.             { 
  101.                 return false
  102.             } 
  103.         } 
  104.  
  105.         /// <summary> 
  106.         /// 删除一条货物信息 
  107.         /// </summary> 
  108.         /// <param name="Cno">货物编号</param> 
  109.         public bool deleteCargoInfo(string Cno) 
  110.         { 
  111.             try 
  112.             { 
  113.                 string sql = "delete from C where Cno=" + Cno; 
  114.                 SqlCommand cmd = new SqlCommand(sql, sqlCon); 
  115.                 cmd.ExecuteNonQuery(); 
  116.                 cmd.Dispose(); 
  117.  
  118.                 return true
  119.             } 
  120.             catch (Exception) 
  121.             { 
  122.                 return false
  123.             } 
  124.         } 
  125.     } 
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.     /// <summary> 
  9.     /// Service1 的摘要说明 
  10.     /// </summary> 
  11.     [WebService(Namespace = "http://tempuri.org/")] 
  12.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
  13.     [System.ComponentModel.ToolboxItem(false)] 
  14.     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
  15.     // [System.Web.Script.Services.ScriptService] 
  16.     public class Service1 : System.Web.Services.WebService 
  17.     { 
  18.         DBOperation dbOperation = new DBOperation(); 
  19.  
  20.         [WebMethod] 
  21.         public string HelloWorld() 
  22.         { 
  23.             return "Hello World"
  24.         } 
  25.  
  26.         [WebMethod(Description = "获取所有货物的信息")] 
  27.         public string[] selectAllCargoInfor() 
  28.         { 
  29.             return dbOperation.selectAllCargoInfor().ToArray(); 
  30.         } 
  31.  
  32.         [WebMethod(Description = "增加一条货物信息")] 
  33.         public bool insertCargoInfo(string Cname,int Cnum) 
  34.         { 
  35.             return dbOperation.insertCargoInfo(Cname, Cnum); 
  36.         } 
  37.  
  38.         [WebMethod(Description = "删除一条货物信息")] 
  39.         public bool deleteCargoInfo(string Cno) 
  40.         { 
  41.             return dbOperation.deleteCargoInfo(Cno); 
  42.         } 
  43.     } 
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 MainActivityextends 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.     } 
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.  
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.     } 
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. <RelativeLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <TableLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <LinearLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <LinearLayoutxmlns: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.     <stringname="app_name">StockManagement</string> 
  4.     <stringname="menu_settings">Settings</string> 
  5.     <stringname="title_activity_main">MainActivity</string> 
  6.     <stringname="btn1">查看所有货物信息</string> 
  7.     <stringname="btn2">增加一条货物信息</string> 
  8.     <stringname="btn3">删除一条货物信息</string> 
  9.     <stringname="add_hint1">输入添加的货物的名称</string> 
  10.     <stringname="add_hint2">输入货物的数量</string> 
  11.     <stringname="confirm">确定</string> 
  12.     <stringname="cancel">取消</string> 
  13.     <stringname="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. <manifestxmlns: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-permissionandroid: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.                 <actionandroid:name="android.intent.action.MAIN"/> 
  22.  
  23.                 <categoryandroid: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


原文:http://blog.csdn.net/zhyl8157121/article/details/8169172

谢谢支持,欢迎大家批评指正。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值