android webservice连接mysql_AndroidStudio手机通过WebService远程访问SqlServer

本文介绍如何在Android Studio中创建一个项目,利用WebService连接远程SQLServer数据库进行增删查改操作。详细步骤包括数据库操作类的编写、WebService的实现、IIS设置、手机客户端编程等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;

using System.Data;

using System.Con figuration;

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.R egularExp ressions;

using System.Collections;

using System.Collections.Generic;

namespace WebApplication1

{

/// <

summary>

///

一个操作数据库的类,所有对SQLServer的操作都写在这个类中,使用的时候实例化一个然后直接调用就可以

/// <

/summary>

public class DBOperation

: IDisposable

{

public static SqlConnection sqlCon;

//用于连接数据库

//下面IP地址适合手机在一个局域网内, 或者是全球唯一地址

private String ConServerStr = @"Data

Source=10.3.1.37;Initial Catalog=book;User

ID=sa;password=123;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>

selectAllUser()

{

List<

string>  list = new List< string>

();

try

{

string sql = "select * from

[user]";

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 (Ex

ception e)

{

}

return

list;

}

/// < summary>

/// 增加用户

/// < /summary>

/// < param name="name"> 名称<

/param>

/// < param name="age"> 年龄<

/param>

public bool insertOneUser(string name, int

age)

{

try

{

string sql = "insert into

[user] (name,age) values ('" + name + "'," + age + ")";

SqlCommand cmd = new

SqlCommand(sql, sqlCon);

cmd.ExecuteNonQuery();

cmd.Dispose();

return true;

}

catch (Ex

ception)

{

return false;

}

}

/// < summary>

/// 删除用户

/// < /summary>

/// < param name="id"> 用户id号<

/param>

public bool deleteOneUser(string id)

{

try

{

string sql = "delete from

[user] where id=" + id;

SqlCommand cmd = new

SqlCommand(sql, sqlCon);

cmd.ExecuteNonQuery();

cmd.Dispose();

return true;

}

catch (Ex

ception)

{

return false;

}

}

}

}

4  WebService1.asmx.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using MyProject;

namespace WebApplication1

{

/// <

summary>

/// WebService1

的摘要说明

/// <

/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 WebService1

: System.Web.Services.WebService

{

DBOperation dbOperation = new

DBOperation();

[WebMethod]

public string HelloWorld()

{

return

"Hello World";

}

[WebMethod(Description = "1 获得所有用户")]

public string[] selectAllUser()

{

return

dbOperation.selectAllUser().ToArray();

}

[WebMethod(Description = "2 增加用户")]

public bool insertOneUser(string name, int

age)

{

return

dbOperation.insertOneUser(name, age);

}

[WebMethod(Description = "3 删除用户")]

public bool deleteOneUser(string id)

{

return

dbOperation.deleteOneUser(id);

}

}

}

四 浏览器测试网站访问

创建网站

1  IIS设置

控制面板--程序和功能--打开或关闭Windows功能--Internet信息服务--

在Web管理工具 和 万维网服务 下,勾选相全部勾选

2 新建网站

右击桌面上的

“计算机”--管理--服务和应用程序--Internet信息服务(IIS)管理

在 Internet

信息服务(IIS)管理器中,展开左侧列表,并右击“网站”--“新建网站”

网站名称随便 myWeb1, 物理路径 D:\MyWebService

点 点击右上部“选择”,从中选择 应用程序池

比如:Classic.Net AppPool

端口号:8070

3 入站规则

一机布置多个网站,用端口号来区分,建立 入站的规则

点击 控制面板 右上角 的 查看方式,从 类别 改为 小图标,

控制面板 -- Windows防火墙 -- 左下侧的 高级设置 -- 左侧的 入站规则

-- 右上侧的 新建规则

TCP 方式,端口号:8070 ,其它都默认

4 浏览器测试

http://localhost:8070/WebService1.asmx/selectAllUser

< ArrayOfString

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns="http://tempuri.org/">

< string> 1< /string>

< string> 李芳< /string>

< string> 18< /string>

< string> 2< /string>

< string> 王苗< /string>

< string> 20< /string>

< string> 3< /string>

< string> 王永< /string>

< string> 23< /string>

< /ArrayOfString>

五 手机客户端编程设计

使用 Android Studio 开发

在Android Studio环境下创建一个项目

File -- New -- New

Project...

工程名称 webservice

1 主MainActivity.java

package com.example.webservice;

import

android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

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.ViewGroup;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.Toast;

public class MainActivity extends Activity{

private Button

btn_all;

private Button

btn_add;

private Button

btn_delete;

private ListView

listView;

private SimpleAdapter

adapter;

private DBUtil

dbUtil;

@Override

public void

onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn_all = (Button)

findViewById(R.id.btn_all);

btn_add = (Button)

findViewById(R.id.btn_add);

btn_delete = (Button)

findViewById(R.id.btn_delete);

listView = (ListView)

findViewById(R.id.listView);

dbUtil = new DBUtil();

btn_all.setOnClickListener(new OnClickListener() {

@Override

public

void onClick(View v) {

hideButton(true);

setListView();

}

});

btn_add.setOnClickListener(new OnClickListener()

{

@Override

public

void onClick(View v) {

hideButton(true);

setAddDialog();

}

});

btn_delete.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 idEditText = (EditText)

dialog.findViewById(R.id.idEditText);

Button btnConfirm = (Button)

dialog.findViewById(R.id.but_ok);

Button btnReturn = (Button)

dialog.findViewById(R.id.but_ret);

btnConfirm.setOnClickListener(new

OnClickListener() {

@Override

public

void onClick(View v) {

Runnable run = new

Runnable()

{

@Override

public void run()

{

dbUtil.deleteUser(cNoEditText.getText().toString());

dialog.dismiss();

//hideButton(false);

//

Toast.makeText(MainActivity.this, "成功删除数据",

Toast.LENGTH_SHORT).show();

}

};

new

Thread(run).start();

hideButton(false);

Toast.makeText(MainActivity.this, "成功删除数据",

Toast.LENGTH_SHORT).show();

}

});

btnReturn.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 btnReturn = (Button)

dialog.findViewById(R.id.button2);

btnConfirm.setOnClickListener(new

OnClickListener() {

@Override

public

void onClick(View v) {

Runnable run = new

Runnable()

{

@Override

public void run()

{

dbUtil.insertUser(cNameEditText.getText().toString(),

cNumEditText.getText().toString());

dialog.dismiss();

//hideButton(false);

//Toast.makeText(MainActivity.this, "成功添加数据",

Toast.LENGTH_SHORT).show();

}

};

new

Thread(run).start();

hideButton(false);

Toast.makeText(MainActivity.this, "成功添加数据",

Toast.LENGTH_SHORT).show();

}

});

btnReturn.setOnClickListener(new

OnClickListener() {

@Override

public

void onClick(View v) {

dialog.dismiss();

hideButton(false);

}

});

dialog.show();

}

//显示用户

private void

setListView() {

final Dialog dialog = new

Dialog(MainActivity.this);

dialog.setContentView(R.layout.dialog_show);

dialog.setTitle("显示人员的信息");

Window dialogWindow = dialog.getWindow();

WindowManager.LayoutParams lp =

dialogWindow.getAttributes();

dialogWindow.setGravity(Gravity.CENTER);

dialogWindow.setAttributes(lp);

final ListView listView= (ListView)

dialog.findViewById(R.id.listView);

final List< HashMap< String, String>

>  list = new ArrayList< HashMap< String,

String> > ();

Button btnReturn = (Button)

dialog.findViewById(R.id.btn_return);

Runnable run = new Runnable()

{

@Override

public

void run()

{

list.addAll( dbUtil.getAllInfo());

adapter =

new SimpleAdapter(

MainActivity.this,

list,

R.layout.adapter_item,

new String[] { "id", "name",

"age" },

new int[] { R.id.txt_id,

R.id.txt_name, R.id.txt_age });

listView.setAdapter(adapter);

}

};

new Thread(run).start();

btnReturn.setOnClickListener(new

OnClickListener() {

@Override

public

void onClick(View v) {

dialog.dismiss();

hideButton(false);

}

});

dialog.show();

}

//button 可见性

private void

hideButton(boolean result) {

if (result) {

btn_delete.setVisibility(View.GONE);

btn_add.setVisibility(View.GONE);

btn_all.setVisibility(View.GONE);

} else {

btn_delete.setVisibility(View.VISIBLE);

btn_add.setVisibility(View.VISIBLE);

btn_all.setVisibility(View.VISIBLE);

}

}

}

2 连接代理的代码 HttpConnSoap.java

package com.example.webservice;

import java.io.IOEx ception;

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.3.1.37是让android模拟器访问本地(PC)服务器

//8070是指端口号,即挂载到IIS上的时候开启的端口

//WebService1.asmx是指提供服务的页面

String ServerUrl =

"http://10.3.1.37:8070/WebService1.asmx";

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 + "> ";

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(12000);// 设置超时时间

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();

//

System.out.println(inStream);

//data=parser(inStream);

//System.out.print("11");

Values =

inputStreamtovaluelist(inStream, methodName);

//System.out.println(Values.size());

} catch (Ex ception e) {

System.out.print("2221");

}

return Values;

}

public ArrayList<

String>  inputStreamtovaluelist(InputStream in,

String MonthsName) throws IOEx ception {

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 = out.toString().split("> <

");// 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.equals("string /")){

Values.add(" ");

continue;

}

if(TS.equals("string/")){

Values.add(" ");

continue;

}

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 针对表user的操作  DBUtil.java

package com.example.webservice;

import java.io.IOEx ception;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

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 (Ex ception e) {

//e.printStackTrace();

}

return con;

}

// 获取所有用户信息

public List<

HashMap< String, String> >  getAllUser()

{

List< HashMap< String, String> >

list = new ArrayList< HashMap< String,

String> > ();

arrayList.clear();

brrayList.clear();

crrayList.clear();

crrayList = Soap.GetWebServre("selectAllUser",

arrayList, brrayList);

HashMap< String, String>

tempHash = new HashMap< String, String>

();

tempHash.put("id", "id");

tempHash.put("name", "name");

tempHash.put("age", "age");

list.add(tempHash);

for (int j = 0; j <

crrayList.size(); j += 3) {

HashMap< String, String>  hashMap = new

HashMap< String, String> ();

hashMap.put("id", crrayList.get(j));

hashMap.put("name", crrayList.get(j + 1));

hashMap.put("age", crrayList.get(j + 2));

list.add(hashMap);

}

return list;

}

// 增加信息

public void

insertUser(String name, String age) {

arrayList.clear();

brrayList.clear();

arrayList.add("name");

arrayList.add("age");

brrayList.add(name);

brrayList.add(age);

Soap.GetWebServre("insertOneUser", arrayList,

brrayList);

}

// 删除一条货物信息

public void

deleteUser(String id) {

arrayList.clear();

brrayList.clear();

arrayList.add("id");

brrayList.add(id);

Soap.GetWebServre("deleteOneUser", arrayList,

brrayList);

}

}

4 配置文件

4.1 主 activity_main.xml

< ?xml version="1.0"

encoding="utf-8"?>

< android.support.constraint.ConstraintLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

< 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"

app:layout_constraintLeft_toLeftOf="parent"

android:text="@string/btn_all"

/>

< Button

android:id="@+id/btn_add"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

app:layout_constraintRight_toRightOf="parent"

android:text="@string/btn_add"

/>

< Button

android:id="@+id/btn_delete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:layout_constraintBottom_toBottomOf="parent"

android:layout_marginTop="10dip"

android:text="@string/btn_delete"

/>

< TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

/>

<

/android.support.constraint.ConstraintLayout>

4.2 显示全部用户 dialog_show.xml

< ?xml version="1.0"

encoding="utf-8"?>

< android.support.constraint.ConstraintLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

< ListView

android:id="@+id/listView"

android:layout_width="fill_parent"

android:layout_height="200dp"

android:visibility="visible">

<

/ListView>

< Button

android:id="@+id/btn_return"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:layout_constraintBottom_toBottomOf="parent"

android:layout_marginTop="10dip"

android:text="返回" />

<

/android.support.constraint.ConstraintLayout>

4.3 具体显示的列表条目 adapter_item.xml

< ?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_id"

android:layout_width="80dp"

android:layout_height="wrap_content"

android:gravity="center"

android:height="40dp"

android:textSize="14sp" >

< /TextView>

< TextView

android:id="@+id/txt_name"

android:layout_width="80dp"

android:layout_height="wrap_content"

android:gravity="center"

android:height="40dp"

android:textSize="14sp" >

< /TextView>

< TextView

android:id="@+id/txt_age"

android:layout_width="80dp"

android:layout_height="wrap_content"

android:gravity="center"

android:height="40dp"

android:textSize="14sp" >

< /TextView>

<

/TableRow>

< /TableLayout>

4.4 删除用户的对话框 dialog_delete.xml

< ?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/idEditText"

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/but_ok"

android:layout_width="100dip"

android:layout_height="wrap_content"

android:layout_marginLeft="20dip"

android:text="@string/confirm" />

< Button

android:id="@+id/but_ret"

android:layout_width="100dip"

android:layout_height="wrap_content"

android:layout_marginLeft="40dip"

android:text="@string/cancel" />

<

/LinearLayout>

< /LinearLayout>

4.5 增加用户的对话框 dialog_add.xml

< ?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/but_ok"

android:layout_width="100dip"

android:layout_height="wrap_content"

android:layout_marginLeft="20dip"

android:text="@string/confirm" />

< Button

android:id="@+id/but_ret"

android:layout_width="100dip"

android:layout_height="wrap_content"

android:layout_marginLeft="40dip"

android:text="@string/cancel" />

<

/LinearLayout>

< /LinearLayout>

5 字符串 strings.xml

< resources>

< string

name="app_name"> WebService<

/string>

< !-- string

name="app_name"> book< /string>

-->

< string

name="menu_settings"> Settings<

/string>

< string

name="title_activity_main"> MainActivity<

/string>

< string

name="btn_all"> 查看所有用户信息< /string>

< string

name="btn_add"> 增加用户< /string>

< string

name="btn_delete"> 删除用户< /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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值