准备工作:

1、打开 Unity3D 安装目录,到这个路径下 Editor > Data > Mono > lib > mono > 2.0 拷贝出下图的五个动态链接库,放到 Unity3D 工程目录下 Assets/Plugins 文件夹中。这里我想重点说一下,在使用过程中这五个动态链接库需要与 Unity3D 版本匹配,也就是说你不要在 Uniyt3D 5.3 版本拷贝出来,拿去 Uniyt3D 5.4 版本中使用,这是有可能出问题的,最好是在自己的 Unity3D 安装目录下去拷贝。I18N.CJK.dll 这个链接库,如果是 PC 端连接数据库可以不需要,如果是移动端连接数据库就必须要。

2、网上下载一个 MySql.Data.dll 动态链接库,也放到 Unity3D 工程目录下 Assets/Plugins 文件夹中。

为了方便对数据库进行创建、增加、删除、修改、查询等操作,我封装了一个工具类,代码如下:

  1. using MySql.Data.MySqlClient;
  2. using System;
  3. using System.Data;
  4.  
  5. public class MySqlAccess
  6. {
  7. public static MySqlConnection mySqlConnection;//连接类对象
  8.  
  9. private static string host; //IP地址。如果只是在本地的话,写localhost就可以。
  10. private static string id; //用户名。
  11. private static string pwd; //密码。
  12. private static string dataBase; //数据库名称。
  13.  
  14. /// <summary>
  15. /// 构造方法
  16. /// </summary>
  17. /// <param name="_host">IP地址</param>
  18. /// <param name="_id">用户名</param>
  19. /// <param name="_pwd">密码</param>
  20. /// <param name="_dataBase">数据库名称</param>
  21. public MySqlAccess(string _host, string _id, string _pwd, string _dataBase)
  22. {
  23. host = _host;
  24. id = _id;
  25. pwd = _pwd;
  26. dataBase = _dataBase;
  27. OpenSql();
  28. }
  29.  
  30. /// <summary>
  31. /// 打开数据库
  32. /// </summary>
  33. public static void OpenSql()
  34. {
  35. try
  36. {
  37. //string.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项。
  38. string mySqlString = string.Format("Database={0};Data Source={1};User Id={2};Password={3};", dataBase, host, id, pwd, "");
  39. mySqlConnection = new MySqlConnection(mySqlString);
  40. mySqlConnection.Open();
  41. }
  42. catch (Exception e)
  43. {
  44. throw new Exception("服务器连接失败,请重新检查是否打开MySql服务。" + e.Message.ToString());
  45. }
  46. }
  47.  
  48. /// <summary>
  49. /// 创建表
  50. /// </summary>
  51. /// <param name="name">表名</param>
  52. /// <param name="colName">属性列</param>
  53. /// <param name="colType">属性类型</param>
  54. /// <returns></returns>
  55. public DataSet CreateTable(string name, string[] colName, string[] colType)
  56. {
  57. if (colName.Length != colType.Length)
  58. {
  59. throw new Exception("输入不正确:" + "columns.Length != colType.Length");
  60. }
  61. string query = "CREATE TABLE " + name + "(" + colName[] + " " + colType[];
  62. for (int i = ; i < colName.Length; i++)
  63. {
  64. query += "," + colName[i] + " " + colType[i];
  65. }
  66. query += ")";
  67. return QuerySet(query);
  68. }
  69.  
  70. /// <summary>
  71. /// 创建具有id自增的表
  72. /// </summary>
  73. /// <param name="name">表名</param>
  74. /// <param name="col">属性列</param>
  75. /// <param name="colType">属性列类型</param>
  76. /// <returns></returns>
  77. public DataSet CreateTableAutoID(string name, string[] col, string[] colType)
  78. {
  79. if (col.Length != colType.Length)
  80. {
  81. throw new Exception("columns.Length != colType.Length");
  82. }
  83. string query = "CREATE TABLE " + name + " (" + col[] + " " + colType[] + " NOT NULL AUTO_INCREMENT";
  84. for (int i = ; i < col.Length; ++i)
  85. {
  86. query += ", " + col[i] + " " + colType[i];
  87. }
  88. query += ", PRIMARY KEY (" + col[] + ")" + ")";
  89. return QuerySet(query);
  90. }
  91.  
  92. /// <summary>
  93. /// 插入一条数据,包括所有,不适用自动累加ID。
  94. /// </summary>
  95. /// <param name="tableName">表名</param>
  96. /// <param name="values">插入值</param>
  97. /// <returns></returns>
  98. public DataSet InsertInto(string tableName, string[] values)
  99. {
  100. string query = "INSERT INTO " + tableName + " VALUES (" + "'" + values[] + "'";
  101. for (int i = ; i < values.Length; ++i)
  102. {
  103. query += ", " + "'" + values[i] + "'";
  104. }
  105. query += ")";
  106. return QuerySet(query);
  107. }
  108.  
  109. /// <summary>
  110. /// 插入部分ID
  111. /// </summary>
  112. /// <param name="tableName">表名</param>
  113. /// <param name="col">属性列</param>
  114. /// <param name="values">属性值</param>
  115. /// <returns></returns>
  116. public DataSet InsertInto(string tableName, string[] col, string[] values)
  117. {
  118. if (col.Length != values.Length)
  119. {
  120. throw new Exception("columns.Length != colType.Length");
  121. }
  122. string query = "INSERT INTO " + tableName + " (" + col[];
  123. for (int i = ; i < col.Length; ++i)
  124. {
  125. query += ", " + col[i];
  126. }
  127. query += ") VALUES (" + "'" + values[] + "'";
  128. for (int i = ; i < values.Length; ++i)
  129. {
  130. query += ", " + "'" + values[i] + "'";
  131. }
  132. query += ")";
  133. return QuerySet(query);
  134. }
  135.  
  136. /// <summary>
  137. /// 查询表数据
  138. /// </summary>
  139. /// <param name="tableName">表名</param>
  140. /// <param name="items">需要查询的列</param>
  141. /// <param name="whereColName">查询的条件列</param>
  142. /// <param name="operation">条件操作符</param>
  143. /// <param name="value">条件的值</param>
  144. /// <returns></returns>
  145. public DataSet Select(string tableName, string[] items, string[] whereColName, string[] operation, string[] value)
  146. {
  147. if (whereColName.Length != operation.Length || operation.Length != value.Length)
  148. {
  149. throw new Exception("输入不正确:" + "col.Length != operation.Length != values.Length");
  150. }
  151. string query = "SELECT " + items[];
  152. for (int i = ; i < items.Length; i++)
  153. {
  154. query += "," + items[i];
  155. }
  156. query += " FROM " + tableName + " WHERE " + " " + whereColName[] + operation[] + " '" + value[] + "'";
  157. for (int i = ; i < whereColName.Length; i++)
  158. {
  159. query += " AND " + whereColName[i] + operation[i] + "' " + value[i] + "'";
  160. }
  161. return QuerySet(query);
  162. }
  163.  
  164. /// <summary>
  165. /// 更新表数据
  166. /// </summary>
  167. /// <param name="tableName">表名</param>
  168. /// <param name="cols">更新列</param>
  169. /// <param name="colsvalues">更新的值</param>
  170. /// <param name="selectkey">条件:列</param>
  171. /// <param name="selectvalue">条件:值</param>
  172. /// <returns></returns>
  173. public DataSet UpdateInto(string tableName, string[] cols, string[] colsvalues, string selectkey, string selectvalue)
  174. {
  175. string query = "UPDATE " + tableName + " SET " + cols[] + " = " + colsvalues[];
  176. for (int i = ; i < colsvalues.Length; ++i)
  177. {
  178. query += ", " + cols[i] + " =" + colsvalues[i];
  179. }
  180. query += " WHERE " + selectkey + " = " + selectvalue + " ";
  181. return QuerySet(query);
  182. }
  183.  
  184. /// <summary>
  185. /// 删除表数据
  186. /// </summary>
  187. /// <param name="tableName">表名</param>
  188. /// <param name="cols">条件:删除列</param>
  189. /// <param name="colsvalues">删除该列属性值所在得行</param>
  190. /// <returns></returns>
  191. public DataSet Delete(string tableName, string[] cols, string[] colsvalues)
  192. {
  193. string query = "DELETE FROM " + tableName + " WHERE " + cols[] + " = " + colsvalues[];
  194. for (int i = ; i < colsvalues.Length; ++i)
  195. {
  196. query += " or " + cols[i] + " = " + colsvalues[i];
  197. }
  198. return QuerySet(query);
  199. }
  200.  
  201. /// <summary>
  202. /// 释放
  203. /// </summary>
  204. public void Close()
  205. {
  206. if (mySqlConnection != null)
  207. {
  208. mySqlConnection.Close();
  209. mySqlConnection.Dispose();
  210. mySqlConnection = null;
  211. }
  212. }
  213.  
  214. /// <summary>
  215. /// 执行Sql语句
  216. /// </summary>
  217. /// <param name="sqlString">sql语句</param>
  218. /// <returns></returns>
  219. public static DataSet QuerySet(string sqlString)
  220. {
  221. if (mySqlConnection.State == ConnectionState.Open)
  222. {
  223. DataSet ds = new DataSet();
  224. try
  225. {
  226. MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(sqlString, mySqlConnection);
  227. mySqlDataAdapter.Fill(ds);
  228. }
  229. catch (Exception e)
  230. {
  231. throw new Exception("SQL:" + sqlString + "/n" + e.Message.ToString());
  232. }
  233. finally
  234. {
  235. }
  236. return ds;
  237. }
  238. return null;
  239. }
  240. }

接下来我们就可以访问数据库了,代码如下:

  1. using UnityEngine;
  2. using System.Data;
  3.  
  4. public class Test : MonoBehaviour
  5. {
  6. private void Start()
  7. {
  8. MySqlAccess mySql = new MySqlAccess("localhost", "root", "root", "Test");
  9. mySql.CreateTableAutoID("tableTest", new string[] { "id", "name", "age" }, new string[] { "int", "text", "text" });
  10. mySql.InsertInto("tableTest", new string[] { "name", "age" }, new string[] { "张三", "" });
  11. mySql.InsertInto("tableTest", new string[] { "name", "age" }, new string[] { "李四", "" });
  12. for (int i = ; i < ; i++)
  13. {
  14. DataSet ds = mySql.Select("tableTest", new string[] { "name", "age" }, new string[] { "id" }, new string[] { "=" }, new string[] { i.ToString() });
  15. if (ds != null)
  16. {
  17. DataTable table = ds.Tables[];
  18. foreach (DataRow row in table.Rows)
  19. {
  20. foreach (DataColumn column in table.Columns)
  21. {
  22. Debug.Log(row[column]);
  23. }
  24. }
  25. }
  26. }
  27. mySql.Close();
  28. }
  29. }

---------------------
作者:xiaoyulong
来源:博客园
原文:https://www.cnblogs.com/xiaoyulong/p/8686886.html

(转载)Unity3D连接本地或局域网MySQL数据库的更多相关文章

  1. Unity3D连接本地或局域网MySQL数据库

    准备工作: 1.打开 Unity3D 安装目录,到这个路径下 Editor > Data > Mono > lib > mono > 2.0 拷贝出下图的五个动态链接库, ...

  2. PHP连接局域网MYSQL数据库的简单实例

    PHP连接局域网MYSQL数据库的简单实例 [php] view plaincopy <?PHP /** * php连接mysql数据库 * by www.jbxue.com */ $conn= ...

  3. PHP连接局域网MYSQL数据库的实例

    PHP连接局域网MYSQL数据库的例子. 代码:                           ?>         第一行ip对应局域网某台主机,关于局域网内mysql连接可参考我的摘抄 ...

  4. navicat for mysql远程连接ubuntu服务器的mysql数据库

    经常玩服务器上的mysql数据库,但是基于linux操作Mysql多有不便,于是就想着使用GUI工具来远程操作mysql数据库.已经不是三次使用navicat-for-mysql了,但是每次连接远程服 ...

  5. C#在局域网中连接Liunx上的MySql数据库

    前期准备工作: 我所用的平台是VS2010和Ubuntu 14.04.3  LTS 一.由于MySql并没有集成在VS2010中所以要先安装MySQL Connector Net 6.9.8连接工具, ...

  6. 本地电脑通过Navicat连接阿里云的Mysql数据库

    第一步:需要设置mysql的监听地址 查看mysql的监听地址: netstat -nao 如果3306(mysql默认端口)前面是0.0.0.0,则表示端口监听没有问题,如果是127.0.0.1,则 ...

  7. 远程连接阿里云的mysql数据库

    第一步 由于mysql版本问题 先尝试打开 sudo vim /etc/mysql/my.cnf 如空,再尝试打开 sudo vim /etc/mysql/mysql.conf.d/mysqld.cn ...

  8. Windows连接Linux服务器中MySQL数据库-权限配置

    问题描述 在Windows系统中安装了监控MySQL数据库服务器性能的工具Spotlight on MySQL,利用Spotlight连接Linux服务器中的MySQL,进行相关配置如下:   点击& ...

  9. 如何将redis中的数据导入到本地MongoDB和MySQL数据库

    将redis中的数据导入到本地MongoDB数据库 创建一个process_items_mongodb.py文件(文件名自定义): #!/usr/bin/env python # -*- coding ...

随机推荐

  1. eclipse xml 文件添加注解快捷键

    eclipse xml 文件注解快捷键: <!--  --> Ctrl + shift + / 添加注解 Ctrl + shift + \ 取消注解

  2. mybatis源码解析9---执行器Executor解析

    从前面分析我们知道了sql的具体执行是通过调用SqlSession接口的对应的方法去执行的,而SqlSession最终都是通过调用了自己的Executor对象的query和update去执行的.本文就 ...

  3. sublime text3 快捷键和好用的插件

    常用快捷键: Ctrl + D 选中一个单词 Ctrl + L 选中一行 Ctrl + A 全选 Ctrl + M 选中括号内所有内容 (编写CSS或JS时非常实用) Ctrl + G 快速定位到某一 ...

  4. Linux服务器---配置nfs

    配置nfs NFS服务的主要配置文件为/etc/exports./etc/exports文件内容格式: <输出目录> 客户端(选项:访问权限,用户映射,其他) 1.输出目录 输出目录是指N ...

  5. 第三方统计分析埋点工具对比,神策、Ptmind、GrowingIO、国双,还有谷歌分析,谁更好?

    第三方统计分析埋点工具对比,神策.Ptmind.GrowingIO.国双,还有谷歌分析,谁更好?https://www.colabug.com/2985393.html GA.Mixpanel 和神策 ...

  6. .NET 常用ORM之Gentle.Net

    .Net常用的就是微软的EF框架和Nhibernate,这两个框架用的都比较多就不做详细介绍了,今天我们来看看Gentle.Net,Gentle.Net是一个开源的优秀O/R Mapping的对象持久 ...

  7. 怎样从外网访问内网IIS?

    本地安装了一个IIS,只能在局域网内访问,怎样从外网也能访问到本地的IIS呢?本文将介绍具体的实现步骤. 准备工作 安装并启动IIS 默认安装的IIS端口是80. 实现步骤 下载并解压holer软件包 ...

  8. 使用Holer外网SSH访问内网(局域网)Linux系统

    1. Holer工具简介 Holer exposes local servers behind NATs and firewalls to the public internet over secur ...

  9. NUL和NULL

    此处讨论C语言中的NUL和NULL 1.NUL是ASCII字符集中'\0'字符的名字,它的字节模式为全0 2.NULL指一个其值为0的指针 3.它们都是整型值,其值也相同,所以可以互换使用 4.然而, ...

  10. ACM总结——2017湖南省省赛总结

    2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己 ...