Ajax+WCF+MySQL实现数据库部署并调用
最近的数据库课程要求将MySQL数据库部署在服务器上,参考了大佬们的博客后,总结一下。
先放上参考的大佬们的博客。
【原创经验分享】JQuery(Ajax)调用WCF服务 - 南宫萧尘 - 博客园 (cnblogs.com)
WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客
一、VS2019下载WCF组件
进入到 C:\Program Files (x86)\Microsoft Visual Studio\Installer 文件夹下,打开 vs_installer.exe。修改VS2019,点击单个组件,搜索WCF并下载安装。

编辑

编辑
二、 新建WCF项目
新建VS项目,选择WCF服务应用程序。将IService.cs、Service.svc删除(如果你不需要的话)。

编辑
添加新建项,选择WCF服务(支持Ajax)。

编辑
三、配置Web.config参数
打开Web.config,配置Forms身份验证。
<authentication mode="Forms"/>

编辑
右键单击 Web.config,选择 编辑WCF配置。

编辑
右键单击 绑定,新建绑定配置。

编辑
选择 webHttpBinding,修改 配置-Name,将 常规-CrossDomainScriptAcessEnabled 设为 True。

编辑

编辑 点击 服务-终结点,修改Name, 在 BindingConfiguration处绑定之前的“绑定”。

编辑
四、编写WCF服务
转到VS项目中之前创建的 xxx.svc.cs文件中,添加如下两项。
[JavascriptCallbackBehavior(UrlParameterName ="jsoncallback")]


编辑
[WebGet (ResponseFormat =WebMessageFormat.Json)]


编辑 在 [OperationContract] 下面编写函数。
public string First()
{
return "OK";
}
[OperationContract]
[WebInvoke(Method ="GET",BodyStyle =WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
/*有参数*/
public string Second(string name)
{
string msg = string.Format("{0}success",name);
return msg;
}
现在,保存项目,右键 svc文件,在浏览器中查看。

编辑
出现如下网页,说明前面没啥问题。

编辑 五、创建HTML,调用服务
新建一个HTML文件,其中,getJSON的URL链接为上图出现的。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
function fGetWCF() {
$.getJSON("http://localhost:8849/dataService.svc/First?jsoncallback=?",
function (data) {
alert(data);
var vData = JSON.stringify(data);
alert(vData);
});
} function fGetWCF2() {
$.getJSON("http://localhost:8849/dataService.svc/Second?jsoncallback=?", {
name: '福元路小佩奇'
},
function (data) {
alert(data);
var vData = JSON.stringify(data);
alert(vData);
});
}
</script>
</head> <body>
<input type="button" name="wcf" id="wcf" value="无参数调用WCF测试" onclick="fGetWCF()" />
<input type="button" name="wcf" id="wcf" value="有参数调用WCF测试" onclick="fGetWCF2()" />
</body> </html>

点击按钮,均有alert弹窗出现。

编辑
运行HTML文件没反应的,在同级目录下新建js文件夹,去网上下载 jquery-1.8.3.min.js放进来。因为有一句 src="js/jquery01.8.3-min.js"
六、WCF连接MySQL
下载 MySQL.Data.DLL(百度),右键项目-添加-引用,将下载的MySQL.Data.DLL加进去。
添加如下引用。
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;

配置MySQL,并创建连接。
const string sqlconfig = "Server=localhost;Port=3306;Uid=root;Pwd=11111;Database=html1";
MySqlConnection connection = new MySqlConnection(sqlconfig);

编写相应函数,完整svc.cs代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text; using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
namespace databaseExport
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[JavascriptCallbackBehavior(UrlParameterName ="jsoncallback")]
public class dataService
{
// 格式转换:DataSet->JSON
public string DataTableToJSON(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"Name\":\"" + dt.TableName + "\",\"Rows");
jsonBuilder.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\""));
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
public string DataSetToJSON(DataSet ds)
{
StringBuilder json = new StringBuilder();
json.Append("{\"Tables\":");
json.Append("[");
foreach (System.Data.DataTable dt in ds.Tables)
{
json.Append(DataTableToJSON(dt));
json.Append(",");
}
json.Remove(json.Length - 1, 1);
json.Append("]");
json.Append("}");
return json.ToString();
} // 在此处添加更多操作并使用 [OperationContract] 标记它们
[OperationContract]
[WebGet (ResponseFormat =WebMessageFormat.Json)]
/*无参数*/
public string First()
{
const string sqlconfig = "Server=localhost;Port=3306;Uid=root;Pwd=111111;Database=html1";
MySqlConnection connection = new MySqlConnection(sqlconfig);
connection.Open();
string sql = "SELECT * FROM test1";
MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
adapter.Fill(ds);
connection.Close();
return DataSetToJSON(ds);
}
[OperationContract]
[WebInvoke(Method ="GET",BodyStyle =WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
/*有参数*/
public string Second(string name)
{
string msg = string.Format("{0}success",name);
return msg;
}
}
}

点击 工具-NuGet包管理器-程序包管理器控制台,运行如下命令,下载Renci.Ssh.NET.dll
NuGet\Install-Package SSH.NET -Version 2016.1.0


编辑
跟前面一样,在浏览器中跑一下WCF服务,打开之前的HTML,点击 无参数调用WCF测试 ,出现如下内容,说明已经读取到数据库中内容。

编辑
七、部署IIS
打开控制面板-程序-启用或关闭Windows功能,勾选并确定。
编辑

编辑
进入VS,右键项目,点击发布。选择方法为:文件系统,选择喜欢的目录,设置好后发布,如下图(该图引自WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客)
编辑
目录下会出现如下文件夹。

编辑
点击 控制面板-系统和安全-管理工具,点击第一个 IIS。

编辑
右键单击 网站,选择添加网站,确定网站名称,物理路径选择之前发布的目录。

编辑
点击 连接为,选择 特定用户,输入你的电脑名称和登录密码。

编辑
如果出现如下情况,检查密码是否错误。如果密码没问题,给电脑新建一个用户,用新建的用户和密码连接。

编辑
如果连接成功,点击测试设置,应该出现下图。

编辑
选择IP地址和端口号,点击确定即可。浏览创建的网站,如下图。

编辑
最后,将HTML文件中的URL地址改为该地址。如图。

编辑
OK,大功告成!
Ajax+WCF+MySQL实现数据库部署并调用的更多相关文章
- 使用ajax+php+mysql实现数据库定时刷新
php版本5.5.9,mysql版本5.7. 所以php链接mysql就是使用mysql_connect. 如果遇到了连接时没有成功也没有失败的情况时,就重启mysql,或重启docker(睡一觉就好 ...
- VS2010中使用Jquery调用Wcf服务读取数据库记录
VS2010中使用Jquery调用Wcf服务读取数据库记录 开发环境:Window Servere 2008 +SQL SERVE 2008 R2+ IIS7 +VS2010+Jquery1.3.2 ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
- Mysql主数据库+备份数据库部署教程
转:http://www.111cn.net/database/mysql/76450.htm 本文我们来讲讲Mysql主备如何部署,这里说的主是指Mysql主数据库,备是从数据库,备可以是多个,也可 ...
- PHP、jQuery、AJAX和MySQL 数据库实例
index.html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- JDBC对MySQL数据库存储过程的调用
一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完成特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中,用 ...
- 企业运维 | MySQL关系型数据库在Docker与Kubernetes容器环境中快速搭建部署主从实践
[点击 关注「 WeiyiGeek」公众号 ] 设为「️ 星标」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 ...
- AJAX 与 MySQL
AJAX 与 MySQL AJAX 可用来与数据库进行交互式通信. AJAX 数据库实例 下面的实例将演示网页如何通过 AJAX 从数据库读取信息: 实例 Select a person: P ...
- 使用vs2010创建、发布、部署、调用 WebService
原文地址:使用vs2010创建.发布.部署.调用 WebService作者:吴超 一 使用vs2010创建 WebService 1 打开VS2010,菜单 文件->新建->项目2 ...
- MySQL/Oracle数据库优化总结
MySQL数据库优化的八种方式 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能 ...
随机推荐
- Pytest进阶使用
fixture 特点: 命令灵活:对于setup,teardown可以省略 数据共享:在conftest.py配置里写方法可以实现数据共享,不需要import导入,可以跨文件共享 scope的层次及神 ...
- java.lang.Object类与equals()及toString()的使用
1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...
- cURL error 1014: SSL verify failed 报错
报错 [ERROR] cURL error 1014: SSL verify failed (see https://curl.haxx.se/libcurl/c/libcurl-errors.htm ...
- Vue学习之--------Scoped样式(2022/8/1)
1.场景 一个页面开发团队进行页面的开发设计.无可避免的会发生样式选择器命名的重复(id的重复.class的重复等).这样间接导致的后果就是.自己的页面样式好好的.在整合一起的时候.可能就会发生样式的 ...
- python环境安装(pyhon和pycharm)
一.python安装 在地址栏输入https://www.python.org/进入python官网, 点击windows后会出现各种可供下载的历史版本, 安装包下载后,双击运行 点击下一步 勾选下面 ...
- LcdTools如何使用PX01进行EDP屏EDID比对及设置显示EDID比对结果
PX01点EDP屏在上电过程会自动读取屏EDID,那怎么进行EDID比对呢? LcdTools打开点屏工程,在上电时序函数中先用SetCmpEDID()指令设置EDID比对值,再调用CheckEDID ...
- 一、什么是celery
一.什么是Celery 1.1.celery是什么 celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,专注于是心爱处理的异步任务队列,同事也支持任务调度. Celery的架构由三部分组成 ...
- 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践
本节内容,涉及到6.1-6.6(P155-182),以WebApi说明为主.主要NuGet包:无 一.创建WebApi的最佳实践,综合了RPC和Restful两种风格的特点 1 //定义Person类 ...
- 将vue+nodejs项目部署到服务器上(完整版)
1.后端使用express生成器 1.1.后台node项目部署 在node项目里安装cors依赖(跨域)npm install cors --save,在app.js文件中使用var cors = r ...
- Mysql InnoDB多版本并发控制MVCC
参考书籍<mysql是怎样运行的> 系列文章目录和关于我 一丶为什么需要事务隔离级别 mysql是一个客户端/服务断软件,对于同一个服务器来说,可以有多个客户端进行连接,每一个客户端进行连 ...