WebGL连接mysql数据库,以及读取服务器文件的流程

1.1 发布WebAPI作为连接数据库的中转站

(1)创建WebAPI项目,VS2017

(2)WebAPI中主要是Post和Get方法,通过Post传入数据库连接参数和要查询的表名,通过Get方法获取查询内容。

using MySql.Data.MySqlClient;
using System;
using System.Data;
using System.Web.Http;
using WebAPI.Models;
using Newtonsoft.Json;

namespace WebAPI.Controllers
{
    public class InterfaceController : ApiController
    {

        private static string connMysql;
        private static string chartName;
        public void Post(InterfaceValue chart)
        {
connMysql=chart.Connectsql; chartName
= chart.ChartsName; } public string Get() { DataTable tbl; try { using (MySqlConnection mysqls=new MySqlConnection(connMysql)) { mysqls.Open(); DataSet dataSet = new DataSet(); MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter("select * from " + chartName, mysqls); sqlDataAdapter.Fill(dataSet); tbl = dataSet.Tables[0]; mysqls.Close(); } } catch (Exception ex) { return ex.ToString(); } return JsonConvert.SerializeObject(tbl); }
public static MySqlCommand getSqlCommand(String sql, MySqlConnection mysql) { MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql); return mySqlCommand; } } }
namespace WebAPI.Models
{
    public class InterfaceValue
    {

public string Connectsql { get; set; } public string ChartsName { get; set; } } }

(3)发布  https://www.pianshen.com/article/69931536317/

(4)IIS中配置WebAPI网站

1.2 获取WebGl文件夹下streamingAssets中.json文件内容

 1   private void Start()
 2     {
 3 
 4         StartCoroutine(GetData("test.json"));
 5     }
 6 
 7 IEnumerator GetData(string fileName)
 8     {
 9         var uri = new System.Uri(Path.Combine(Application.streamingAssetsPath, fileName));
10         UnityWebRequest www = UnityWebRequest.Get(uri);
11         yield return www.SendWebRequest();
12 
13         if (www.isNetworkError || www.isHttpError)
14         {
15             Debug.Log(www.error);
16         }
17         else
18         {
19 
20             //Debug.Log(www.downloadHandler.text);
21             string jsonStr = www.downloadHandler.text;
22             files = JsonConvert.DeserializeObject<List<string>>(jsonStr);
23 
24         }
25     }

根据获取到的文本内容得到:1、数据库连接字段connect 2、要查询的表名chartName

1.3 使用Post方法和Get方法连接WebAPI

  private bool arrived=true;
  private  URL = "http://192.XXX.XX.XXX:8081/api/interface";
 1    IEnumerator SetPost1(string connect)
 2     {
 3                    
 4             while (!arrived)
 5             {
 6                 yield return new WaitForSeconds(0.01f);
 7             }
 8             arrived = false;
 9             WWWForm form = new WWWForm();
11 form.AddField("Connectsql", connect); 12 form.AddField("ChartsName",chartName); 13 //Post方法 14 UnityWebRequest www = UnityWebRequest.Post(URL, form); 15 //www.uploadHandler.contentType = "application/json"; 16 yield return www.SendWebRequest(); 17 18 if (www.isNetworkError || www.isHttpError) 19 { 20 Debug.Log(www.error); 22 }

//Get方法
23 UnityWebRequest webRequest = UnityWebRequest.Get(URL); 24 yield return webRequest.SendWebRequest(); 25 26 string[] pages = URL.Split('/'); 27 int page = pages.Length - 1; 28 if (webRequest.isNetworkError) 29 { 30 Debug.Log(pages[page] + ": Error: " + webRequest.error); 31 } 32 else 33 { 34 string dataStr = webRequest.downloadHandler.text.Replace("\\", ""); 35 dataStr=dataStr.Replace("\"", ""); 36 //将数据表的字符串结果转化成二维数组dataTable 37 //print("dataStr" + dataStr); 38 string[] str = dataStr.Split(':'); 39 int colIndex=0; 40 int rowIndex = 0; 41 string[,] dataTable = new string[int.Parse(rows) , int.Parse(cols)]; 42 for (int k = 1; k < str.Length; k++) 43 { 44 if (str[k].Contains("}")) 45 { 46 dataTable[rowIndex++,colIndex] = str[k].Substring(0, str[k].IndexOf('}')); 47 colIndex = 0; 48 } 49 else 50 { 51 dataTable[rowIndex,colIndex++] = str[k].Substring(0, str[k].IndexOf(',')); 52 } 53 } 54 } 55 56 }

 


 

posted @ 2021-09-09 11:43  昭1122  阅读(745)  评论(0编辑  收藏  举报