Android-用webservice连接sqlserver数据库

以前做的东西,只要用数据库的都是在项目里自己重新做一份数据。但是这种方法是很不可取的,首先,手机内存不会很大,把数据表建在项目里无疑又增大了程序。这样一来手机的运行速度可想而知。其次,数据大的时候还是放在数据库比较合适,不仅方便而且可达到同步的效果。

很多应用软件所依存的数据都是在数据库里,这时方便精简又可同步到数据库的方法只有连接数据库了。这里就是用webservice连接数据库即soap协议来达到获取数据库信息的目的。

做了个小例子:

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">  

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />
   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
       <EditText
           android:id="@+id/name"
           android:layout_width="200dp"
           android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/search" 

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/search"/>
    </LinearLayout>
    <TextView android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>  

</LinearLayout>

建一个工具类SOAPUtil:

public class SOAPUtil {
    public static Object doTransport(final String wsdUrl, final String webMethod) {
        String nameSpace = "http://tempuri.org/";//一般都是默认的
        SoapObject soapObject = new SoapObject(nameSpace, webMethod);
        // soapObject.addProperty(propertyInfo)
        System.out.println();
        SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        soapSerializationEnvelope.bodyIn = soapObject;
        soapSerializationEnvelope.dotNet = true;
        soapSerializationEnvelope.setOutputSoapObject(soapObject);
        HttpTransportSE httpTransportSE = new HttpTransportSE(wsdUrl);
        String SOAP_ACTION = "http://tempuri.org/" + webMethod;
        //输出soapAction
        System.out.println(SOAP_ACTION);
        try {
            httpTransportSE.call(SOAP_ACTION, soapSerializationEnvelope);
            System.out.println("调用结束");
            //输出响应
            System.out.println(soapSerializationEnvelope.getResponse());
            if (soapSerializationEnvelope.getResponse() != null) {
                SoapObject result = (SoapObject) soapSerializationEnvelope
                        .getResponse();
                //输出结果
                for (int i = 0; i < result.getPropertyCount(); i++) {
                    System.out.println("result [" + i + "] = "+ result.getProperty(i).toString());
                }  

                return result;
            }
        } catch (IOException e) {
            System.out.println("IOException");
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return null;
    }
}

主要实现方法:

public class MainActivity extends Activity {
    private Button searchs;
    private TextView results;  

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        searchs=(Button) findViewById(R.id.search);
        results=(TextView) findViewById(R.id.result);
        searchs.setOnClickListener(new View.OnClickListener() {  

            @Override
            public void onClick(View v) {
                //服务器地址
                String wsdUrl="http://192.168.1.195:88/service1.asmx";
                //方法名
                String method="SelectAll";
                Object result=SOAPUtil.doTransport(wsdUrl, method);
                results.setText(result.toString());  

            }
        });
    }  

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

以上这些是我们在客户端这边的必要步骤,除此之外还需要服务器给出接口(接口名即activity里的方法名)。这里我没有写接口,接口其实很简单各种编程语言都可以,主要就是sql操作语句,写完部署到服务器即可。

时间: 2024-08-10 19:17:15

Android-用webservice连接sqlserver数据库的相关文章

Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)

为了避免再次被说标题党,这里先说明些事情:         第一,android没法直接连接SQLServer,起码我没有发现方法,想想看,sqlserver安装之后有多大,android程序是跑在手机上的,想让程序直接访问sqlserver,那手机要多大的内存?         第二,本文是通过一个"桥梁"--webservice来间接访问SQLServer的,当然还有其他方法,感兴趣的同学可以自行百度.         如果理解了上面两点,好了咱们继续.   教程会拿一个具体的例子

Android通过webservice对sqlserver数据库进行操作

首页在AndroidManifest.xml中添加访问数据库权限 <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.INTERNET" /> 在src中新建一个连接webservice的类,名字随意,这里叫做“HttpConnSoap”.基本上这个类是固定的,要改的大多数就是webservice端口地址,具体代码如下

asp.net 连接sqlserver数据库

在asp.net中连接sqlserver数据库之前,首先得确保正常安装了sqlserver2008,同时有数据库. 在项目中添加一个类DB,用来专门负责执行对数据库的增删改查.在添加的过程中会弹出下面的一个提示 直接点是就可以了. 在这个类中,首先定义一个连接对象 private SqlConnection conn = null;然后定义下面三个函数 private void SetConnection()//初始化连接对象 { if (conn == null) { //获取配置文件中的数据

openTSP连接sqlServer数据库&amp;jpa调用存储过程

openTSP框架下的模块都是连接mysql数据库,近期青汽有连接sqlServer数据库的需求,在调研后配置了sqlServer数据库,使用jpa调用存储过程,中间也踩了不少坑,总结一下,避免大家再掉进去. 1.首先配置sqlServer的依赖 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version

笨鸟先飞随笔:ADO.NET中VS连接Sqlserver数据库的代码

在main函数中添加的连接Sqlserver数据库的代码如下所示: 以下代码用于Sqlserver验证方式 首先需要引用命名空间 using system.System.Data.SqlClient; static void Main(string[] args) { string constring = "server=local;database=teaching;uid=sa;pwd=123456"; using (SqlConnection conn = new SqlConn

java 连接sqlserver数据库语句

import java.sql.*; /** * java 连接sqlserver数据库语句 * @author Administrator * */ public class Main {         public static void main(String [] args) throws SQLException {                                     String driverName="com.microsoft.sqlserver.jdbc.

笨鸟先飞随笔:ADO.NET中VS连接Sqlserver数据库的代码(Windows身份验证方式补充)

上一篇只写到了数据库Sqlserver连接方式下的连接代码在这里对Windows验证方式的连接做一下补充: 关于VS连接Sqlserver数据库windows验证方式的操作方式: 01.VS窗口中上方菜单依次选择数据 02.添加新数据源 03.然后选择数据库后点击下一步 如下图所示: 04.选择数据集然后点击下一步 如下图所示: 05.点击新建连接,弹出对话框 如下图所示: 06.数据源显示为Microsoft SQL server SqlClient 如果不是则需要点击更改修改为Microso

JDBC连接SqlServer数据库(非默认实例)方法

一般我们在连接数据库的时候都是用的默认实例名,今天遇到了用非默认是实例名:连接代码如下(Java): URL=jdbc:microsoft:sqlserver://192.168.1.85//DEMO;DatabaseName=PePsiEasyData 说明: 192.168.1.85是数据库地址.不指定端口 //DEMO 指定实例名为DEMO 也可以写成这样: URL=jdbc:microsoft:sqlserver://192.168.1.85;instanceName=DEMO;Data

unity3d 连接sqlserver数据库

U3d连接SQLServer首先把Unity安装目录下的System.Data.dll拷到工程的Asset/Plugins目录下,然后编写连接数据库的脚本,在以上两个步骤无误的情况下,提示这个错误,要考虑SQLServer的相关服务有没有开启,同时要在SQLServer的配置管理器中启用TCP/IP协议,步骤如下 打开开始—程序—Microsoft SQL Server 2005—配置工具—SQL Server Configuration Manager-- SQL Server 2005网络配

C#连接Access数据库,C#连接Excel数据库,C#连接SqlServer数据库,C#连接Mysql数据库总结

大二下学期写的了,如今毕业一个月了,整理整理 额,以前写的好幼稚,只有自己明白了,网上一大堆,大概的意思说下吧 MySQL========================================= http://user.qzone.qq.com/652768664/blog/1347859952 连接mysql需要安装mysql,在mysql的C盘安装目录有一个连接 lib,将改lib添加引用用项目OK; static void Main(string[] args) { List<s