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 }