准备工作:

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 文件夹中。

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

 using MySql.Data.MySqlClient;
using System;
using System.Data; public class MySqlAccess
{
public static MySqlConnection mySqlConnection;//连接类对象 private static string host; //IP地址。如果只是在本地的话,写localhost就可以。
private static string id; //用户名。
private static string pwd; //密码。
private static string dataBase; //数据库名称。 /// <summary>
/// 构造方法
/// </summary>
/// <param name="_host">IP地址</param>
/// <param name="_id">用户名</param>
/// <param name="_pwd">密码</param>
/// <param name="_dataBase">数据库名称</param>
public MySqlAccess(string _host, string _id, string _pwd, string _dataBase)
{
host = _host;
id = _id;
pwd = _pwd;
dataBase = _dataBase;
OpenSql();
} /// <summary>
/// 打开数据库
/// </summary>
public static void OpenSql()
{
try
{
//string.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项。
string mySqlString = string.Format("Database={0};Data Source={1};User Id={2};Password={3};", dataBase, host, id, pwd, "");
mySqlConnection = new MySqlConnection(mySqlString);
mySqlConnection.Open();
}
catch (Exception e)
{
throw new Exception("服务器连接失败,请重新检查是否打开MySql服务。" + e.Message.ToString());
}
} /// <summary>
/// 创建表
/// </summary>
/// <param name="name">表名</param>
/// <param name="colName">属性列</param>
/// <param name="colType">属性类型</param>
/// <returns></returns>
public DataSet CreateTable(string name, string[] colName, string[] colType)
{
if (colName.Length != colType.Length)
{
throw new Exception("输入不正确:" + "columns.Length != colType.Length");
}
string query = "CREATE TABLE " + name + "(" + colName[] + " " + colType[];
for (int i = ; i < colName.Length; i++)
{
query += "," + colName[i] + " " + colType[i];
}
query += ")";
return QuerySet(query);
} /// <summary>
/// 创建具有id自增的表
/// </summary>
/// <param name="name">表名</param>
/// <param name="col">属性列</param>
/// <param name="colType">属性列类型</param>
/// <returns></returns>
public DataSet CreateTableAutoID(string name, string[] col, string[] colType)
{
if (col.Length != colType.Length)
{
throw new Exception("columns.Length != colType.Length");
}
string query = "CREATE TABLE " + name + " (" + col[] + " " + colType[] + " NOT NULL AUTO_INCREMENT";
for (int i = ; i < col.Length; ++i)
{
query += ", " + col[i] + " " + colType[i];
}
query += ", PRIMARY KEY (" + col[] + ")" + ")";
return QuerySet(query);
} /// <summary>
/// 插入一条数据,包括所有,不适用自动累加ID。
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="values">插入值</param>
/// <returns></returns>
public DataSet InsertInto(string tableName, string[] values)
{
string query = "INSERT INTO " + tableName + " VALUES (" + "'" + values[] + "'";
for (int i = ; i < values.Length; ++i)
{
query += ", " + "'" + values[i] + "'";
}
query += ")";
return QuerySet(query);
} /// <summary>
/// 插入部分ID
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="col">属性列</param>
/// <param name="values">属性值</param>
/// <returns></returns>
public DataSet InsertInto(string tableName, string[] col, string[] values)
{
if (col.Length != values.Length)
{
throw new Exception("columns.Length != colType.Length");
}
string query = "INSERT INTO " + tableName + " (" + col[];
for (int i = ; i < col.Length; ++i)
{
query += ", " + col[i];
}
query += ") VALUES (" + "'" + values[] + "'";
for (int i = ; i < values.Length; ++i)
{
query += ", " + "'" + values[i] + "'";
}
query += ")";
return QuerySet(query);
} /// <summary>
/// 查询表数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="items">需要查询的列</param>
/// <param name="whereColName">查询的条件列</param>
/// <param name="operation">条件操作符</param>
/// <param name="value">条件的值</param>
/// <returns></returns>
public DataSet Select(string tableName, string[] items, string[] whereColName, string[] operation, string[] value)
{
if (whereColName.Length != operation.Length || operation.Length != value.Length)
{
throw new Exception("输入不正确:" + "col.Length != operation.Length != values.Length");
}
string query = "SELECT " + items[];
for (int i = ; i < items.Length; i++)
{
query += "," + items[i];
}
query += " FROM " + tableName + " WHERE " + " " + whereColName[] + operation[] + " '" + value[] + "'";
for (int i = ; i < whereColName.Length; i++)
{
query += " AND " + whereColName[i] + operation[i] + "' " + value[i] + "'";
}
return QuerySet(query);
} /// <summary>
/// 更新表数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="cols">更新列</param>
/// <param name="colsvalues">更新的值</param>
/// <param name="selectkey">条件:列</param>
/// <param name="selectvalue">条件:值</param>
/// <returns></returns>
public DataSet UpdateInto(string tableName, string[] cols, string[] colsvalues, string selectkey, string selectvalue)
{
string query = "UPDATE " + tableName + " SET " + cols[] + " = " + colsvalues[];
for (int i = ; i < colsvalues.Length; ++i)
{
query += ", " + cols[i] + " =" + colsvalues[i];
}
query += " WHERE " + selectkey + " = " + selectvalue + " ";
return QuerySet(query);
} /// <summary>
/// 删除表数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="cols">条件:删除列</param>
/// <param name="colsvalues">删除该列属性值所在得行</param>
/// <returns></returns>
public DataSet Delete(string tableName, string[] cols, string[] colsvalues)
{
string query = "DELETE FROM " + tableName + " WHERE " + cols[] + " = " + colsvalues[];
for (int i = ; i < colsvalues.Length; ++i)
{
query += " or " + cols[i] + " = " + colsvalues[i];
}
return QuerySet(query);
} /// <summary>
/// 释放
/// </summary>
public void Close()
{
if (mySqlConnection != null)
{
mySqlConnection.Close();
mySqlConnection.Dispose();
mySqlConnection = null;
}
} /// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="sqlString">sql语句</param>
/// <returns></returns>
public static DataSet QuerySet(string sqlString)
{
if (mySqlConnection.State == ConnectionState.Open)
{
DataSet ds = new DataSet();
try
{
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(sqlString, mySqlConnection);
mySqlDataAdapter.Fill(ds);
}
catch (Exception e)
{
throw new Exception("SQL:" + sqlString + "/n" + e.Message.ToString());
}
finally
{
}
return ds;
}
return null;
}
}

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

 using UnityEngine;
using System.Data; public class Test : MonoBehaviour
{
private void Start()
{
MySqlAccess mySql = new MySqlAccess("localhost", "root", "root", "Test");
mySql.CreateTableAutoID("tableTest", new string[] { "id", "name", "age" }, new string[] { "int", "text", "text" });
mySql.InsertInto("tableTest", new string[] { "name", "age" }, new string[] { "张三", "" });
mySql.InsertInto("tableTest", new string[] { "name", "age" }, new string[] { "李四", "" });
for (int i = ; i < ; i++)
{
DataSet ds = mySql.Select("tableTest", new string[] { "name", "age" }, new string[] { "id" }, new string[] { "=" }, new string[] { i.ToString() });
if (ds != null)
{
DataTable table = ds.Tables[];
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Debug.Log(row[column]);
}
}
}
}
mySql.Close();
}
}

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

最新文章

  1. Android中使用java.util.Properties犯的错
  2. UVAoj 11324 - The Largest Clique(tarjan + dp)
  3. java之Cookie详解
  4. 数据库的应用——直接从内存中读取osg节点 (转)
  5. newsstand杂志阅读应用源码ipad版
  6. 【转】edittext设置点击链接
  7. CAF(C++ actor framework)使用随笔(同步发送 异步与同步等待)(三)
  8. 自定义滚动条CSS样式
  9. ZOJ3946:Highway Project(最短路变形)
  10. Tensorflow name_scope
  11. js获取form元素,不使用id
  12. VsCode语言设置为中文
  13. no module named cv2
  14. iOS 按钮拖动。
  15. 行为类模式(二):命令(Command)
  16. 逆向路由器固件之敏感信息泄露 Part2
  17. Jade简单教程
  18. 深度包检测(DPI)详细介绍
  19. Python基本语法[二]
  20. STDIN_FILENO vs stdin

热门文章

  1. mybatis oracle -批量插入,存在则更新
  2. python 数据序列化(json、pickle、shelve)
  3. Spring源码阅读(三)
  4. 那些年 Qzone
  5. SQL数据库增量备份还原方式
  6. docker local registry server gave HTTP response to HTTPS client
  7. mxnet 查看 Sym shape
  8. Spring MVC数据绑定
  9. EDK II之驱动程序与硬件平台的初始化简介
  10. await