[c#]创建webservice调用mysql服务
某课程作业,要求如下:
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。
不错,根据博主的笔记完整的做了一遍。博文中发现两个问题,第二问题中涉及到关联查询,另外返回值以String来展示博主可以使用ExecuteReader()函数一行行读取。最后,还是要再次感谢楼主。
你的ID真诱人