Unity连接Mysql对数据库的操作

发表于2018-09-03
评论0 8.6k浏览
对数据库进行操作必须需要牢记:打开数据库执行一次操作之后一定要关闭数据库,再使用时再打开。考虑到有些人初次接触Mysql,下面就给大家介绍下连接Mysql对数据库的操作方法。

在cmd命令行中start和stop 启动与关闭MySQL。

工程下载地址:链接:http://pan.baidu.com/s/1skJ1ebF 密码:l0n7
net start mysql 
net stop mysql

方便数据库的创建、增加、删除、修改、查询
using UnityEngine;  
using System;  
using System.Data;  
using System.Collections;   
using MySql.Data.MySqlClient;
using MySql.Data;
using System.IO;
public class SqlAccess 
{
    public static MySqlConnection dbConnection;
    //如果只是在本地的话,写localhost就可以。
   // static string host = "localhost";  
    //如果是局域网,那么写上本机的局域网IP
    static string host = "127.0.0.1";  
    static string id = "root";
    static string pwd = "123456";
    static string database = "circle"; 
    public SqlAccess()
    {
        OpenSql();
    }
    public static void OpenSql()
    {
        try
        {
            string connectionString = string.Format("Server = {0};port={4};Database = {1}; User ID = {2}; Password = {3};",host,database,id,pwd,"3306");
            dbConnection = new MySqlConnection(connectionString);
            dbConnection.Open(); 
        }catch (Exception e)
        {
            throw new Exception("服务器连接失败,请重新检查是否打开MySql服务。" + e.Message.ToString());  
        }
    }
    public DataSet CreateTable (string name, string[] col, string[] colType)
    {
        if (col.Length != colType.Length) 
        {
            throw new Exception ("columns.Length != colType.Length");
        }
        string query = "CREATE TABLE " + name + " (" + col[0] + " " + colType[0];
        for (int i = 1; i < col.Length; ++i) {
            query += ", " + col[i] + " " + colType[i];
        }
        query += ")";
        return  ExecuteQuery(query);
    }
    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[0] + " " + colType[0] +  " NOT NULL AUTO_INCREMENT";
        for (int i = 1; i < col.Length; ++i) {
            query += ", " + col[i] + " " + colType[i];
        }
        query += ", PRIMARY KEY ("+ col[0] +")" + ")";
        Debug.Log(query);
        return  ExecuteQuery(query);
    }
    //插入一条数据,包括所有,不适用自动累加ID。
    public DataSet InsertInto (string tableName, string[] values)
    {
        string query = "INSERT INTO " + tableName + " VALUES (" + "'"+ values[0]+ "'";
        for (int i = 1; i < values.Length; ++i) {
            query += ", " + "'"+values[i]+ "'";
        }
        query += ")";
        Debug.Log(query);
        return ExecuteQuery (query);
    }
    //插入部分ID
    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[0];
        for (int i = 1; i < col.Length; ++i) 
        {
            query += ", "+col[i];
        }
        query += ") VALUES (" + "'"+ values[0]+ "'";
        for (int i = 1; i < values.Length; ++i) 
        {
            query += ", " + "'"+values[i]+ "'";
        }
        query += ")";
        Debug.Log(query);
        return ExecuteQuery (query);
    }
    public DataSet SelectWhere (string tableName, string[] items, string[] col, string[] operation, string[] values)
    {
        if (col.Length != operation.Length || operation.Length != values.Length) {
            throw new Exception ("col.Length != operation.Length != values.Length");
        }
        string query = "SELECT " + items[0];
        for (int i = 1; i < items.Length; ++i) {
            query += ", " + items[i];
        }
        query += " FROM " + tableName + " WHERE " + col[0] + operation[0] + "'" + values[0] + "' ";
        for (int i = 1; i < col.Length; ++i) {
            query += " AND " + col[i] + operation[i] + "'" + values[0] + "' ";
        }
        return ExecuteQuery (query);
    } 
    public DataSet UpdateInto (string tableName, string []cols,string []colsvalues,string selectkey,string selectvalue)
    {
        string query = "UPDATE "+tableName+" SET "+cols[0]+" = "+colsvalues[0];
        for (int i = 1; i < colsvalues.Length; ++i) {
             query += ", " +cols[i]+" ="+ colsvalues[i];
        }
         query += " WHERE "+selectkey+" = "+selectvalue+" ";
        return ExecuteQuery (query);
    }
    public DataSet Delete(string tableName,string []cols,string []colsvalues)
    {
        string query = "DELETE FROM "+tableName + " WHERE " +cols[0] +" = " + colsvalues[0];
        for (int i = 1; i < colsvalues.Length; ++i) 
        {
                query += " or " +cols[i]+" = "+ colsvalues[i];
        }
        Debug.Log(query);
        return ExecuteQuery (query);
    }
    public  void Close()
    {
        if(dbConnection != null)
        {
            dbConnection.Close();
            dbConnection.Dispose();
            dbConnection = null;
        }
    }
    public static DataSet ExecuteQuery(string sqlString)  
    {  
        if(dbConnection.State==ConnectionState.Open)
        {
            DataSet ds = new DataSet();  
            try  
            {  
                MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection); 
                da.Fill(ds);
            }  
            catch (Exception ee)  
            {
                throw new Exception("SQL:" + sqlString + "/n" + ee.Message.ToString());  
            }
            finally
            {
            }
            return ds;
        }
        return null;
    }
}

using UnityEngine;  
using System;  
using System.Data;  
using System.Collections;   
using MySql.Data.MySqlClient;
using MySql.Data;
using System.IO;
public class NewBehaviourScript : MonoBehaviour {
    string Error = null;
    void Start () 
    {
        try
        {
        SqlAccess sql = new  SqlAccess();
         //sql.CreateTableAutoID("user",new string[]{"id","name","qq","email","blog"}, new string[]{"int","text","text","text","text"});
        //sql.CreateTable("user",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
        sql.InsertInto("user",new string[]{"name","qq","email","blog"},new string[]{"circle","289187120","iiccttff@gmail.com","circle.com"});
        sql.InsertInto("user", new string[] { "name", "qq", "email", "blog" }, new string[] { "circle01", "34546546", "circle01@gmail.com", "circle01.com" });
        DataSet ds  = sql.SelectWhere("user",new string[]{"name","qq"},new string []{"id"},new string []{"="},new string []{"1"});
        if(ds != null)
        {
            DataTable table = ds.Tables[0];
            foreach (DataRow row in table.Rows)
            {
               foreach (DataColumn column in table.Columns)
               {
                    Debug.Log(row[column]);
               }
             }
        }   
         sql.UpdateInto("user",new string[]{"name","qq"},new string[]{"'circle01'","'11111111'"}, "email", "'010101@gmail.com'"  );
         sql.Delete("user",new string[]{"id","email"}, new string[]{"1","'000@gmail.com'"}  );
         sql.Close();
        }catch(Exception e)
        {
            Error = e.Message;
        }
    }
    // Update is called once per frame
    void OnGUI () 
    {
        if(Error != null)
        {
            GUILayout.Label(Error);
        }
    }
}
来自:https://blog.csdn.net/u013108312/article/details/67632654

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引