Unity3D连接MySQL(二)讲解篇

目录

1. 引入所需 dll 文件 

2. 代码流程

3. DataSet 解析


Unity3D连接MySQL(一)使用篇

1. 引入所需 dll 文件 

Unity3D连接MySQL(二)讲解篇_第1张图片

D:\Unity\2018.3.14f1\Editor\Data\Mono\lib\mono\2.0 

I18N.CJK.dll、I18N.dll、I18N.West.dll

MySql.Data 去 Mysql 官网下载 

Unity目录下添加Plugins文件夹,将dll放进去 unity将会自动引用。

 

2. 代码流程

首先 Select() 拼接 sql 语句,而后 ExecuteQuery() 执行sql语句,返回 DataSet

using (var connection = GetSqlConn()) 获取数据库连接

connStr 封装好连接数据库的 conn 参数,这里的参数要跟 Navicat 里面数据库连接匹配

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System;

public class SqlHelper
{
    private static SqlHelper _instance = new SqlHelper();
    private static string connStr = "Database=student;Data Source = 127.0.0.1; User Id = root; Password=123456;port=3306";
    public static SqlHelper Instance
    {
        get
        {
            return _instance;
        }
    }

    /// 
    /// 获取连接
    /// 
    /// 
    public static MySqlConnection GetSqlConn()
    {
        MySqlConnection sqlConn = null;
        sqlConn = new MySqlConnection(connStr);
        return sqlConn;
    }

    
    /// 
    /// 查询指定字段
    /// 
    /// 
    /// 
    /// 
    public static DataSet Select(string tableName, string[] items)
    {
        string query = "SELECT " + items[0];
        for (int i = 1; i < items.Length; ++i)
        {
            query += ", " + items[i];
        }
        query += " FROM " + tableName;
        Debug.LogFormat("query: {0}", query);
        return ExecuteQuery(query);
    }

    ......

    /// 
    /// 执行查询语句,返回DataSet
    /// 
    /// 查询语句
    /// DataSet
    public static DataSet ExecuteQuery(string SQLString)
    {

        using (var connection = GetSqlConn())
        {
            DataSet ds = new DataSet();
            try
            {
                connection.Open();
                MySqlDataAdapter da = new MySqlDataAdapter(SQLString, connection);
                da.Fill(ds);
            }
            catch (MySqlException ex)
            {
                connection.Close();
                throw new Exception(ex.Message);
            }
            finally
            {
                connection.Close();
            }
            return ds;
        }
    }


}

 

3. DataSet 解析

数据集中获取数据表,数据表可以直接理解为数据库表的形式。

DataTable table = ds.Tables[0]; 拿第一个表即可

table.Rows[0][0].ToString()  获取对应位置的值

 

DataSet 数据集,可以自由移动指针,数据与DB断开。

DataTable 数据表

DataReader 数据处理速度快,但是只读,移到下一行就不能查看上一行数据

 

ds.Tables.Count - 返回表的数量,一个 select 返回一个 table

ds.Tables[0].Rows.Count - 第一个表的条数

ds.Tables[0].Rows[0].ItemArray[0] - 第一个表,第一条数据,第一个值

 

防止数组越界:取值前判断ds.Tables.Count、ds.Tables[0].Rows.Count等大小

 

    /// 
    /// 从数据库查找
    /// 
    private void getDevNameAllFromDB()
    {
        DataSet ds = new DataSet();
        ds = queryDevNameAllDB(ds);
        //拿到的table,一行多列
        if (ds != null)
        {
            DataTable table = ds.Tables[0];
            //Debug.LogFormat("列数:{0}", table.Columns.Count);
            Debug.LogFormat("查找数据库行数:{0}", table.Rows.Count);
            for (int i = 0; i < table.Rows.Count; i++)
            {
                Debug.LogFormat("table:{1} {2} {3} {4}", i, table.Rows[i][0].ToString(), table.Rows[i][1].ToString(),
                    table.Rows[i][2].ToString(), table.Rows[i][3].ToString());
                //Debug.LogFormat("table.Rows[{0}][1]:{1}", i, table.Rows[i][1].ToString());
                
            }
        }
    }

 

 

 

 

 

你可能感兴趣的:(Unity3D入门到放弃)