Unity3D接入MySQL数据库

Posted by Y Cheung on Wed, Mar 25, 2020

系統环境:

  • Windows 10(x64)(version 1909)
  • Unity3D (version 2018.3.0f2)
  • Microsoft Visual Studio Community 2017 (version 15.9.4)

操作步驟:

准備一個本地/綫上Mysql數據庫

Y Cheung 的數據庫設置如下:

1DATABASE Host: 127.0.0.1
2DATABASE Port: 3306
3DATABASE Name: my_db
4DATABASE Username: root
5DATABASE Password: 7vWe4Z@ZT2N#

下載並安裝Mysql Connector/ODBC(可選)

下載並安裝Mysql Connector/ODBC,如果安裝過程中遇到錯誤(Error 1918),前往官網下載並安裝最新的適合你系統的Visual C++ Redistributable。安裝完成后可以在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\ODBC 数据源(64 位)的驅動程序中看到安裝好的驅動

Mysql Connector/ODBC driver

下載並安裝Mysql Connector/NET

下載並安裝Mysql Connector/NET ,安裝完成后可以在C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2看到以下文件

MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2

導入DLL文件

在Unity3D Assets中導入上一步驟中 C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2 文件夾裏的以下文件

1MySql.Data.dll
2BouncyCastle.Crypto.dll
3Google.Protobuf.dll
4Renci.SshNet.dll
5SshNet.Security.Cryptography.dll
6Ubiety.Dns.Core.dll

Unity3D import MySQL Connector Net dll

編輯scripts

開始你對數據庫操作的代碼,一個簡單的例子

 1using System.Collections;
 2using System.Collections.Generic;
 3using UnityEngine;
 4using MySql.Data.MySqlClient;
 5
 6public class MysqlAccess
 7{
 8    public static MySqlConnection mySqlConnection;
 9    static string host = "127.0.0.1";
10    static string user = "root";
11    static string pwd = "7vWe4Z@ZT2N";
12    static string db = "my_db";
13    static string port = "3306";
14
15    public void connectDB()
16    {
17        Open();
18    }
19    public static void Open()
20    {
21        try
22        {
23            string connectionString = string.Format("Server = {0};port={4};Database = {1}; User ID = {2}; Password = {3};", host, db, user, pwd, port);
24            mySqlConnection = new MySqlConnection();
25            mySqlConnection.Open();
26        }catch(System.Exception e)
27        {
28            throw new System.Exception(""+e.Message.ToString());
29        }
30    }
31
32    public void Close()
33    {
34        if (mySqlConnection != null)
35        {
36            mySqlConnection.Close();
37            mySqlConnection.Dispose();
38            mySqlConnection = null;
39        }
40    }
41}

⚠ 本文係幫助朋友解決Unity3D對接Mysql的問題,但Y Cheung不建議Unity3D在生產環境直接對數據庫進行操作,這是很危險的行爲