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

由于课程答辩,需要连接到数据库,这里使用了SQLServer,但是安卓不好直接连接,需要调用webservice,于是找到了之前大神写的博客,但是由于时间久远,部分版本不对,有些使用不能成功,于是自己在发个自己成功的例子。本人是新手,大神勿喷。。
参考:https://blog.csdn.net/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[] sele
  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要通过Android连接SQL Server并使用WebService,您可以按照以下步骤进行操作: 1. 首先,确保您已经创建了一个用于SQL Server数据库服务器以及相应的表。 2. 下载并安装适用于Android开发的IDE(如Android Studio)并创建新的Android项目。 3. 在Android项目的build.gradle文件中,添加Java连接SQL Server所需的依赖项。示例代码如下: ```java dependencies { implementation 'net.sourceforge.jtds:jtds:1.3.1' } ``` 4. 在Android的MainActivity.java文件中,编写以下代码来创建使用WebService连接SQL Server的逻辑: ```java import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final String ip = "your_server_ip_address"; private static final String port = "your_sql_server_port"; private static final String database = "your_database_name"; private static final String user = "your_username"; private static final String password = "your_password"; private Button connectButton; private TextView resultTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connectButton = findViewById(R.id.connectButton); resultTextView = findViewById(R.id.resultTextView); connectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ConnectSQLServer().execute(); } }); } private class ConnectSQLServer extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { String result = ""; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); String url = "jdbc:jtds:sqlserver://" + ip + ":" + port + "/" + database; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("your_sql_query_here"); while (resultSet.next()) { result += resultSet.getString("your_column_name"); } resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { Log.e(TAG, "Error: " + e.getMessage()); result = "Error: " + e.getMessage(); } return result; } @Override protected void onPostExecute(String result) { resultTextView.setText(result); } } } ``` 通过上述代码,当用户点击Connect按钮时,将会创建一个异步任务来连接SQL Server并执行查询。请确保将您的服务器IP地址、端口、数据库名称、用户名和密码替换为实际值。 5. 在Android的布局文件(activity_main.xml)中,创建一个Button和一个TextView用于显示查询结果。 ```xml <RelativeLayout 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:paddingLeft="16dp" android:paddingTop="16dp" android:paddingRight="16dp" android:paddingBottom="16dp"> <Button android:id="@+id/connectButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Connect" android:layout_centerInParent="true"/> <TextView android:id="@+id/resultTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/connectButton" android:textSize="18sp"/> </RelativeLayout> ``` 6. 运行Android应用程序,并点击Connect按钮以连接SQL Server并显示查询结果。 这就是使用Android连接SQL Server并使用WebService详细教程。请注意,这只是一个基本示例,您可能需要根据您的特定需求进行一些调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值