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

本文详细介绍了如何在Android应用中通过webservice连接到SQLServer数据库。首先设计了名为Android的数据库,包含CompetitionInfo表。接着在Visual Studio 2017中搭建webservice接口,创建ASMX Web服务,编写数据库连接和查询代码。然后发布到IIS并配置网站,最后在Android客户端实现调用webservice接口。提供了完整的步骤和源代码链接。

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

由于课程答辩,需要连接到数据库,这里使用了SQLServer,但是安卓不好直接连接,需要调用webservice,于是找到了之前大神写的博客,但是由于时间久远,部分版本不对,有些使用不能成功,于是自己在发个自己成功的例子。本人是新手,大神勿喷。。
参考:https://blog.youkuaiyun.com/zhyl8157121/article/details/8169172#

先设计数据库,我的数据库名为Android 表为CompetitionInfo,表的设计如下(注意下面,Cno需要设置标识规范):

接下来需要搭建webservice的接口了。
我使用的是Visual Studio 2017 。
点击新建——>项目——>选择ASP.NET.Web应用程序(.NET Framework)
在这里插入图片描述
点击确定,并会跳出新建ASP.NET Web 应用程序 ,选择空
在这里插入图片描述
打开解决方案资源管理器,右键项目->添加->Web服务(ASMX)
在这里插入图片描述
自己设置名字,之后点击确定
创建之后可以看到如下界面
在这里插入图片描述
这里已经有自带的HelloWorld()接口,按F5运行,调用此方法会出现如下界面
在这里插入图片描述

现在我们要开始写自己调用数据库的方法了。
首先要连接数据库,点击工具->连接到数据库
在这里插入图片描述
选择数据选为Microsoft SQL Server (SqlClient),一般默认服务器名为127.0.0.1,并填写要连接的数据库,之后点击测试连接,如若成功则再点击确定。
在这里插入图片描述
点击 视图->其他窗口->服务器资源窗口
在这里插入图片描述
这里可以看到数据库,并进行相应操作
在这里插入图片描述
接下来要编写代码了。先打开解决方案资源管理器,右键项目->添加->类©
在这里插入图片描述

自定义名字,之后点击确定
在这里插入图片描述
DBOperation.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

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 WebserviceTest
{
    /// <summary>
    /// 一个操作数据库的类,所有对SQLServer的操作都写在这个类中,使用的时候实例化一个然后直接调用就可以
    /// </summary>
    public class DBOperation : IDisposable
    {
        public static SqlConnection sqlCon;  //用于连接数据库

        //将下面的引号之间的内容换成上面记录下的属性中的连接字符串
        //Source 为你的数据库地址 Catalog为你的数据库名
        private String ConServerStr = @"Data Source=127.0.0.1;Initial Catalog=Android;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;
            }
        }


        //Competiton 表操作
        //查询
        public List<string> selectAllCompetitonInfo()
        {
            List<string> list2 = new List<string>();

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

                while (reader.Read())
                {
                    //将结果集信息添加到返回向量中
                    list2.Add(reader[0].ToString());
                    list2.Add(reader[1].ToString());
                    list2.Add(reader[2].ToString());
                    list2.Add(reader[3].ToString());
                    list2.Add(reader[4].ToString());
                    list2.Add(reader[5].ToString());
                    list2.Add(reader[6].ToString());

                }

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

            }
            catch (Exception)
            {

            }
            return list2;
        }
        //删除
        public bool deleteCompetitonInfo(string Cno)
        {
            try
            {
                string sql = "delete from CompetitionInfo where Cno=" + Cno;
                SqlCommand cmd = new SqlCommand(sql, sqlCon);
                cmd.ExecuteNonQuery();
                cmd.Dispose();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        //增加
        public bool insertCompetitionInfo(string CTitle, string CStatus, string CHost, string CLevel, string CTime, string CTimng)
        {
            try
            {
                string sql = "insert into CompetitionInfo (CTitle,CStatus,CHost,CLevel,CTime,CTimng) values ('" + CTitle + "','" + CStatus + "','" + CHost + "','" + CLevel + "','" + CTime + "','" + CTimng + "')";
                SqlCommand cmd = new SqlCommand(sql, sqlCon);
                cmd.ExecuteNonQuery();
                cmd.Dispose();

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



    }
}

在WebService1.asmx.cs上调用
在这里插入图片描述
WebService1.asmx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebserviceTest
{
    /// <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
    {
        WebserviceTest.DBOperation dbOperation = new WebserviceTest.DBOperation();

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod(Description = "获取所有竞赛信息")]
        public string[] selectAllCompetitonInfo()
        {
            return dbOperation.selectAllCompetitonInfo().ToArray();
        }
        [WebMethod(Description = "增加一条竞赛信息")]
        public bool insertCompetitionInfo(string CTitle, string CStatus, string CHost, string CLevel, string CTime, string CTimng)
        {
            return dbOperation.insertCompetitionInfo(CTitle, CStatus, CHost, CLevel, CTime, CTimng);
        }
        [WebMethod(Description = "删除一条竞赛信息")]
        public bool deleteCompetitonInfo(string Cno)
        {
            return dbOperation.deleteCompetitonInfo(Cno);
        }
    }
}

若你想使用远程连接,你还需要在Web.config里输入以下代码

  <webServices>
         <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name=
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值