unity and MySql

摘要:数据库的图片以及内容如图:

1.数据库的封装

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

public class SqlAccess
{
    public static MySqlConnection dbConnection;
    //如果只是在本地的话,写localhost就可以。
    // static string host = "localhost"; 
    //如果是局域网,那么写上本机的局域网IP
    static string host = "localhost";
    static string id = "root";//可以通过这个用户访问数据库
    static string pwd = "013287";//创建链接时候的密码
    static string database = "man";//数据库的名字

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;
    }
}

2.数据库与unity的链接

这个脚本需要挂载在一个激活的物体上

using System;
using UnityEngine;
using System.Data;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

string Error = null;
    void Start()
    {
        try
        {

SqlAccess sql = new SqlAccess(); //获取对封装好的数据库的引用

//   sql.CreateTableAutoID("people", new string[] { "idcard", "age", "name" }, new string[] {  "idcard", "age", "name"});
            //sql.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
            // sql.InsertInto("people", new string[] { "idcard", "age", "name" }, new string[] { "6789", "22", "qiang" });
            //  sql.InsertInto("people", new string[] { "idcard", "age", "name"}, new string[] { "5", "age2", "name2" });

DataSet ds = sql.SelectWhere("people", new string[] { "idcard", "age", "name" }, new string[] { "idcard" }, new string[] { "=" }, new string[] { "520" }); //把返回的数据集付给ds,此时的修改已经在封装好的sqlAccess中改回数据库了,此时通过ds进行UI显示或输出等
            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.Close();
        }
        catch (Exception e)
        {
            Error = e.Message;
        }

}

// Update is called once per frame
    void OnGUI()
    {

if (Error != null)
        {
            GUILayout.Label(Error);
        }

}
}

时间: 2024-10-15 14:52:28

unity and MySql的相关文章

Nodejs连接MySQL&amp;&amp;实现unity中的登陆注册功能

MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs有13库可以访问MySQL,felixge/node-mysql似乎是最受关注项目,我也决定尝试用一下. 要注意名字,"felixge/node-mysql"非"node-mysql",安装目录 1. node-mysql介绍 felixge/node-mysql是一个纯nodejs的用javascript实现的一个MySQL客户端程序.felixge/node-my

Unity 3D 连接Mysql数据库

要想使用Unity直接连接数据库需要以下几个动态库 连接数据库前 将关于数据库的方法进行封装:MySqlConnection .cs 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 M

C# 对轻量级(IoC Container)依赖注入Unity的使用

概述 Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入.Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题.构建一个成功应用程序的关键是实现非常松散的耦合设计.松散耦合的应用程序更灵活,更易于维护.这样的程序也更容易在开发期间进行测试.你可以模拟对象,具有较强的具体依赖关系的垫片(轻量级模拟实现),如数据库连接,网络连接,ERP连接,和丰富的用户界面组件.例如,处理客户信息的对象可能依赖于其他对象访问的数据存储,验证信息,并检查该用户是否被授权执行更

unity访问php

长连接,弱联网.不好意思,这俩不是一个意思. 反过来说,短连接,强联网,是不是有点别扭呢. 你可以不会php,甚至你可以不知道php是干什么的. 百度php安装环境,自行搭建好环境,顺便测试一下.(下载那个XAMPP,数据库也是弄好的) 百度连接mysql数据库 会找到如下代码,具体的可能会有差别,反正你测试连接成功就行 例子 下面的例子选取存储在 "Persons" 表中的所有数据(* 字符选取表中所有数据): <?php $con = mysql_connect("

Unity3D连接MySQL数据库所需要的DLL

Unity3D连接MySQL数据库所需要的DLL 纠结了很久终于搞定 需要一下DLL D:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity 目录下的 I18N.dll   I18N.West.dll   I18N.CJK.dll D:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 目录下的 System.Data.dll  System.Drawing.dll 还需要 mysql5.0版

两种方法连接MySql数据库

1.用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using S

Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)

看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这个适合新手.所以这里就跟大家分享下.其实这个网上也有教程的,但我这里算是优化前辈们的教程吧,因为 我当时按照他们的操作时卡了几次,因为他们的有的地方没讲清楚. Ubuntu 12.04(代号Precise Pangolin)是一个LTS长期支持版本,已如约正式发布.Ubuntu 12.04是第16代Ubu

Unity中操作手机常用功能

最近在测试一个小Demo,用到很多手机功能.在这里一一贴出来,以供后期参考 备注:在打包发布时,Plugins下一定要导入如下dll文件,否则build后无法连接数据库<I18N,I18N.West,System.Data,Mysql.Data> 1.操作手机震动:  Handheld.Vibrate();  //震动前自己加条件判断 2.Input框 调用系统输入法:每个插件TextBox控件自带此功能,实用时开启即可,自动调用手机输入法. 3.退出应用程序<不完整>:if(In

MySql单表最大8000W+ 之数据库遇瓶颈记

前言 昨晚救火到两三点,早上七点多醒来,朦胧中醒来发现电脑还开着,赶紧爬起来看昨晚执行的SQL命令结果.由于昨晚升级了阿里云的RDS,等了将近两个小时 还在 升降级中,早上阿里云那边回复升级过程中出现异常,正在加紧处理...有点蛋疼 项目介绍 这个项目主要分为WEB.WEB-Manager.WEB-API.APP(ANDROID.IOS) . 开发语言主要是ASP.NET 数据库MySql 架构采用了ASP.NET +EF+ORM   Unity依赖注入 采用了DDD的部分实践 ORM使用的是A