[c#]创建webservice调用mysql服务

464 Views

某课程作业,要求如下:

1.用户验证:输入UserName和Password获取用户角色类型

2.获取指定账号手术室列表:输入用户名称,获取相关的手术列表

3.获取开放手术室列表:获取所有开放的手术室信息

4.获取开放录制列表:获取所有的有录制的手术信息

大体要求建立一个webservice,通过webservice操作mysql数据库。写起来不难,但是因为版本问题导致C#连接mysql几乎让人崩溃。如果添加引用mysql.data.dll出现错误:警告 15 未能找到引用的组件“MySql.Data”。 那么就是因为mysql.data版本过高,在网上下载尽可能低的版本导入即可。


首先,为了配置环境,我们需要安装mysql、vs、iis。

打开mysql,自行创建数据库test1610和test1610下的表并插入一些数据,或执行作业的sql文件。

打开vs,新建web服务应用程序

项目会自动生成初始代码,helloword函数就是一段测试函数

在项目中添加mysql.data.dll的引用(区分32和64位)

引入mysql的连接模块


using MySql.Data.MySqlClient;

在webservice的主类下定义连接数据库的字符串:


string M_str_sqlcon = "server=localhost;user id=root;password=root;database=test1610";

创建连接数据库的方法


private MySqlConnection getmysqlcon()
 {
     MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
     return myCon;
 }

依次添加四个服务函数


[WebMethod]
public string CheckUserLogin(String UserName, String Password)
{
    MySqlConnection mysqlcon = this.getmysqlcon();
    try
    {
        mysqlcon.Open();
        string M_str_sqlstr = string.Format("select DisplayName from tmember where UserName='{0}' and M_Password='{1}'",UserName,Password);
        MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
        string res=mysqlcom.ExecuteScalar().ToString();
        return res;
    }
    catch (Exception e)
    {
        return "没有此用户";
    }
    finally
    {
        mysqlcon.Close();
        mysqlcon.Dispose();
    }
}

[WebMethod]
public DataSet GetOperationListByUsername(string UserName)
{
    MySqlConnection mysqlcon = this.getmysqlcon();
    try
    {
        mysqlcon.Open();
        string M_str_sqlstr = string.Format("select * from troom where UserName='{0}'", UserName);

         MySqlDataAdapter da = new MySqlDataAdapter(M_str_sqlstr, mysqlcon);
         DataSet ds = new DataSet();
         da.Fill(ds, "Operation");
         return ds;
    }
    catch (Exception e)
    {
        return null;
    }
    finally
    {
        mysqlcon.Close();
        mysqlcon.Dispose();
    }
}

[WebMethod]
public DataSet GetPublicOperationList()
{
    MySqlConnection mysqlcon = this.getmysqlcon();
    try
    {
        mysqlcon.Open();
        string M_str_sqlstr = string.Format("select * from toperation where isopen=1");
        MySqlDataAdapter da = new MySqlDataAdapter(M_str_sqlstr, mysqlcon);
        DataSet ds = new DataSet();
        da.Fill(ds, "PublicOperation");
        return ds;
    }
    catch (Exception e)
    {
        return null;
    }
    finally
    {
        mysqlcon.Close();
        mysqlcon.Dispose();
    }
}

[WebMethod]
public DataSet GetPublicRecordingList()
{
    MySqlConnection mysqlcon = this.getmysqlcon();
    try
    {
        mysqlcon.Open();
        string M_str_sqlstr = string.Format("select toperation.* from toperation join trecording where toperation.OperationID=trecording.OperationID");
        MySqlDataAdapter da = new MySqlDataAdapter(M_str_sqlstr, mysqlcon);
        DataSet ds = new DataSet();
        da.Fill(ds,"PublicRecordingList");
        return ds;
    }
    catch (Exception e)
    {
        return null;
    }
    finally
    {
        mysqlcon.Close();
        mysqlcon.Dispose();
    }
}

【作业还要求返回的类型是string类型而不是dataset,这里怎么做就慢慢百度吧,我暂时也没想到办法】完成后右击工程选择发布,发布到一个文件夹下

打开iis管理器,在默认站点Default Web Site添加新的网站,物理地址设为之前的发布路径

打开浏览器,访问 localhost/虚拟路径名/Service1.asmx,可以看到已创建的服务

打开服务连接即可调用服务

如果发布webservice的计算机为服务器,通过在本地项目中引用webservice的虚拟地址(不能是localhost),可以远程调用webservice提供的服务。访问返回值的类型为xml。

[c#]创建webservice调用mysql服务》有2条留言

  1. 不错,根据博主的笔记完整的做了一遍。博文中发现两个问题,第二问题中涉及到关联查询,另外返回值以String来展示博主可以使用ExecuteReader()函数一行行读取。最后,还是要再次感谢楼主。

留下回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据