首页 > 数据库 >Ajax+WCF+MySQL实现数据库部署并调用

Ajax+WCF+MySQL实现数据库部署并调用

时间:2023-01-05 18:12:17浏览次数:61  
标签:string WCF 编辑 Ajax jsonBuilder MySQL using Append

         最近的数据库课程要求将MySQL数据库部署在服务器上,参考了大佬们的博客后,总结一下。

        先放上参考的大佬们的博客。

        【原创经验分享】JQuery(Ajax)调用WCF服务 - 南宫萧尘 - 博客园 (cnblogs.com)

          WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客

         未能加载文件或程序集“Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=……” - 河耶悦子 - 博客园 (cnblogs.com)        

        一、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,大功告成!

标签:string,WCF,编辑,Ajax,jsonBuilder,MySQL,using,Append
From: https://www.cnblogs.com/Peggy114514/p/17028511.html

相关文章

  • ubuntu关闭mysql开机自启动
    TodisableMySQLfromstartingautomaticallyatboottimeonUbuntu,followthesesteps:Openaterminalwindow.UsethefollowingcommandtostoptheMySQLs......
  • window下MySQL的压缩包方式安装--单版本或多版本(5.7和8共存)通用
    环境:win11MySQL版本:5.7和8.311.下载MySQL数据库注意:记得查看自己电脑是32位还是64位的,这里下的64位的,64位的电脑可以用32位的包,32位的用64的包可能有问题8版本官网下......
  • mysql学习笔记
    1、​​MySQL索引详细介绍​​2、MySql索引实现原理索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构提取句子主干,就可以得到索引的本质:索......
  • shell备份mysql数据库指定表
    1、先执行命令:netstat -ln |grep mysql获取当前mysql的socket  2、执行如下命令备份数据库的指定表mysqldump -hIP-P端口-u数据库用户-p数据库密码--sock=......
  • 火狐浏览器中jquery发起ajax请求报错
    <buttonclass="btn"id="pass">批量通过</button>问题原因:火狐浏览器中,button按钮默认类型为submit,会已form表单的形式提交。通过指定type为button即可<buttonclass="......
  • 一个查找mysql数据库无主键表的脚本
    说明:遍历所有的库表然后查询是否具有主键/bin/bashdb_host=172.19.211.2#dbipdb_name_list="chimessoxrayintcommpultus"#填写db_name支持多个数据库,以空格隔......
  • Sqlserver,Mysql基础SQL语句
    Sqlserver,Mysql基础SQL语句SqlServer建表CREATETABLE[IFNOTEXISTS]表名( 字段名列类型[属性], 字段名列类型[属性], ....... 字段名列类型[属性]);......
  • MySQL 8.x 数据库主从复制搭建
    前提:MySQL修改server-uuid的方法前提:如果服务器是克隆master的服务器的,server-uuid值都是一样的。会导致主从复制报错误1593,修改一下server-uuid以后重启MySQL1.查......
  • pymysql之常见数据库操作
    导包并关联数据库importpymysqlconn=pymysql.Connect(host='localhost',user='root',db='stu',port=3306,password='dong')c=conn.cursor()查询某数据库各个表名sql=......
  • mysql备份与恢复
     1.备份mysqldump-uroot-p123456-Btesttest1>db_test.sql#备份test和test1数据库  2.恢复 恢复有个前提条件:Mysql安装完后必须修改过一次密码,不能......