unity3d代码创建数据库表

2017-11-23 14:14:00 weixin_34279061 阅读数 84
点击查看原图
1,创建一个数据库表,我们就以 test数据库为例,数据库里建一个tb_User表, tb_User里有User_Name , User_Pass 字段.

2,创建一个验证用户基本信息的asp.net页面,页面名字是:Default.aspx

后台代码如下:
普通浏览复制代码
  1. using System;
  2. using System.Configuration;
  3. using System.Data;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Data.SqlClient;
  11. public partial class _Default : System.Web.UI.Page 
  12. {
  13.         
  14.         SqlConnection conn = new SqlConnection("Data Source=.\sqlexpress2008;Initial Catalog=test;Integrated Security=True");
  15.     
  16.     protected void Page_Load(object sender, EventArgs e)
  17.     {
  18.         string name = Request.Form["name2"];
  19.         string pwd=Request.Form["pwd"];
  20.         
  21.         conn.Open();
  22.         string sql = "select User_Name from tb_User where User_Name='" + name + "' and User_Pass='"+pwd+"'";
  23.         SqlCommand cmd = new SqlCommand(sql, conn);
  24.         if (cmd.ExecuteScalar() != null)
  25.             Response.Write("success");
  26.         else
  27.             Response.Write("faield");
  28.         conn.Close();
  29.     }
  30. }
前台代码不用管.

3,新建一个Unity 3D项目,新建一个Javascript文件, 在Javascript文件上编写如下代码:
  1. var URL = "http://devmac.net/domino/rui/Default.aspx"; //提交的URL地址
  2. static var return_data:String;
  3. var strname:String;
  4. var strpwd:String;

  5. var cls:boolean=false;
  6. var xx:Rect = Rect (20, 10, 150, 100);

  7. function OnGUI() {
  8.         if(cls)
  9.             xx = GUI.Window(1, xx, windowjj, "Window");
  10.         GUI.Label(Rect(10,10,80,20),"UserName:");
  11.         GUI.Label(Rect(10,30,80,20),"Userpass:");
  12.         strname=GUI.TextField(Rect(90,10,100,20),strname);
  13.         strpwd=GUI.PasswordField(Rect(90,30,100,20),strpwd,"*"[0],25);
  14.         
  15.         //same as above, but for password
  16.           if ( GUI.Button ( Rect (60, 60, 100, 20) , "Login" ) ){ //just a button
  17.                 
  18.               Login();
  19.               
  20.           }
  21.         
  22. }

  23. function windowjj(windowID : int){
  24.     
  25.     GUI.Label(Rect(55,25,50,20),return_data);
  26.     if(GUI.Button(Rect(50,55,50,20),"Close")) cls=false;//
  27.     
  28. }

  29. function Login() {

  30.     var form = new WWWForm(); //创建一个WWWForm对象。

  31.    form.AddField( "name2", strname );
  32.    form.AddField("pwd",strpwd);
  33.    
  34.     var w:WWW=new WWW(URL,form);
  35.     
  36.    yield w; //we wait for the form to check the PHP file, so our game dont just hang
  37.    cls=true;
  38.    if (w.error != null) {

  39.          //if there is an error, tell us
  40.       return_data=w.error;
  41.      

  42.    } else {

  43.            return_data=w.text;
  44.               w.Dispose(); //clear our form in game

  45.    }
  46. }
复制代码
4. 此代码放在主相机上。














本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366181,如需转载请自行联系原作者
2014-12-09 22:44:13 caoboya 阅读数 835

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。1. 建立数据库。      
       create database 数据库名

       create database 数据库名
       on primary
       (
       name=数据文件别名,
       filename=‘d:\data\data.mdf’,
       size=25MB,
       maxsize=50MB,
       filegrowth=2MB
       )
       log on
       (
       name=日志文件别名,
       filename=‘d:\data\log.ldf’,
       size=10MB,
       maxsize=20MB,
       filegrowth=25%
       )
2. 利用数据库。
       use 数据库名
3. 建立数据表。
       create table 表名(
       id int identity(101,1) primary key,
       name varchar(20) not null,
       password varchar(10)
       )
4. 查询所有信息。
       select * from 表名
5、删除数据库和表。
       删除数据库

       drop database 数据库名
       删除表
       drop table 表名
6、插入一行数据。
       insert  into <表名>  [(列名)] values(值列表)
       代码示例:insert into students (name,address,grade,email,sex) values(‘张三’,‘保定’,6,‘1324@qqcom’,’女’)
7、插入多行数据。
  1)
       insert into <表名>(列名)
       select <列值> union
       select <列值> union
       ……
       select <列值>
       代码示例:
       insert into users(name,password)
       select  '张三','123' union
       select '李四','456' union
       select '王五','789'
  2)
       select (旧列名)into <新表名> from <旧表名>      //新表不存在
       代码示例:select students.name,students.address,students.email into TongXunLu from students
  3)
       insert into <新表名>(列名)
       select <源列名>
       from <源表名>               //新表已经存在
       代码示例:
       insert into TongXunLu (姓名,地址,电子邮件)
       select name,address,email
       from students
  4)select into插入多行数据的时候,如何插入新的标识列?
       select identity(数据类型,标识种子,标识增长量) as 列名 into 新表 from 原始表       //新表不存在
       代码示例:select students.name,students.address,students.email,identity(int,1,1)  as studentID into TongXunLu from students
8、更新数据。
       update <表名> set <列名 = 更新值> [where <更新条件>]
       update students set sex = ‘男’    //表中所有用户性别全部改为男。
       update students set sex = ‘男’  where id=10001     //表中id为10001的用户性别改为男
9、删除数据。
       delete from <表名> [where <删除条件>]
       delete from students where name ='张三'
       truncate table <表名>
       truncate table students
    (1)truncate table:删除内容、释放空间但不删除定义。
    (2)delete table:删除内容不删除定义,不释放空间。
    (3)drop table:删除内容和定义,释放空间。
    (4)delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少.
    (5)如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。

2009-07-30 17:37:00 nette 阅读数 9732

Unity3D 连接MySql数据库

 

一.在Mac OS X中架设MySql数据库


下载mysql for Mac http://dev.mysql.com/downloads/mysql/5.0.html

可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装MySQL。请注意该软件包不支持旧版本的Mac OS X(例如,10.1.x)。

安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件。应当安装图像并显示其内容。

注释:在继续安装前,一定要使用MySQL管理器应用程序(在Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服务器实例。

要想安装MySQL PKG文件,双击软件包图标。将启动Mac OS X安装软件包安装器,将指导你完成MySQL安装。

Mac OS X安装软件包的安装器中有一个缺陷,你会在目标盘选择对话框中发现该错误消息:

You cannot install this software on this disk. (null)

如果出现该错误,只需要点击Go Back按钮返回前面的窗口。然后点击Continue再次选择目标盘,此时应当可以正确地选择目标盘。我们已经向Apple报告了该缺陷,它正在调查该问题。

MySQL的Mac OS X PKG安装到/usr/local/mysql-VERSION,并且还会安装一个符号连接,/usr/local/mysql,指向新的位置。如果有 /usr/local/mysql目录,首先将它改名为/usr/local/mysql.bak。安装完后,安装器执行 mysql_install_db在MySQL数据库中创建授权表。

安装布局与tar文件二进制分发版类似;所有MySQL二进制代码位于目录/usr/local/mysql/bin中。默认情况,MySQL套接字文件创建为/tmp/mysql.sock

MySQL安装需要Mac OS X的mysql用户账户。在Mac OS X 10.2及以上版本中,默认情况应存在mysql用户账户。

如果正运行Mac OS X服务器,需要安装MySQL。随Mac OS X服务器版本安装的MySQL版本如下表所示:

Mac OS X服务器版本  MySQL版本
10.2-10.2.2         3.23.51
10.2.3-10.2.6       3.23.53
10.3                4.0.14
10.3.2              4.0.16
10.4.0              4.1.10a

节只覆盖官方MySQL Mac OS X PKG版本。一定要阅读Apple关于MySQL安装的帮助信息:运行“帮助视图”应用程序,选择“Mac OS X服务器”帮助,搜索“MySQL”,阅读标题为“安装MySQL”的内容。

对于Mac OS X服务器上已经安装的MySQL版本,如果早于4.0,应特别注意应当使用mysqld_safe而不是safe_mysqld来启动mysqld。

如果你前面在Mac OS X上安装了从http://www.entropy.ch下载的Marc Liyanage的MySQL软件包,你可以只使用该页给出的二进制安装布局按照更新说明来安装。

如果你从Marc的3.23.xx 版本或从Mac OS X的MySQL服务器版本升级到官方MySQL PKG,你还需要将已有MySQL授权表转换为当前格式,因为已经加了许多新的安全权限。

如果你想在系统启动过程中自动启动MySQL,你还需要安装MySQL Startup Item。在MySQL 5.1中,它是Mac OS X安装盘映像的一部分,是一个独立的安装软件包。只需要双击MySQLStartupItem.图标并按照说明来安装。

请注意Startup Item只需要安装一次!不需要在以后每次升级MySQL软件包时都安装它。

MySQL 5.1的Startup Item安装在/Library/StartupItems/MySQLCOM。(在MySQL 4.1.2以前的版本,安装位置为/Library/StartupItems/MySQL,但与Mac OS X服务器安装的MySQL Startup Item冲突)。Startup Item安装时在系统配置文件/etc/hostconfig中加入变量MySQLCOM=-YES-。如果你想要disable自动启动MySQL,只需要将该变量更改为MySQLCOM=-NO-。

在Mac OS X服务器上,默认MySQL安装使用/etc/hostconfig文件中的变量MySQL。MySQL AB Startup Item安装器将其设置为MySQL=-NO-禁用该变量。这样可以避免启动时间与MySQL AB Startup Item使用的MySQLCOM变量冲突。但是,不会关闭运行的MySQL服务器。你应当自己关闭。

安装完后,可以在终端窗口运行下面的命令来启动MySQL。你必须具有管理员权限来执行该任务。

如果你已经安装的Startup Item:

shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

(Enter your password, if necessary)

(Press Control-D or enter "exit" to exit the shell)

如果不使用Startup Item,输入下面的命令序列:

shell> cd /usr/local/mysql

shell> sudo ./bin/mysqld_safe

(Enter your password, if necessary)

(Press Control-Z)

shell> bg

(Press Control-D or enter "exit" to exit the shell)

你应当能够连接MySQL服务器,例如,通过运行/usr/local/mysql/bin/mysql来连接。

注释:MySQL授权表中的账户开始没有密码。启动服务器后,应当按照2.9节,“安装后的设置和测试”中的说明来设置密码。

你可以为外壳源文件起一个别名,使它更容易访问常用的程序,例如从命令行运行mysql和mysqladmin。tcsh语法为:

aliasMySQL /usr/local/mysql/bin/mysql
aliasMySQLadmin /usr/local/mysql/bin/mysqladmin

对于bash,使用:

aliasMySQL=/usr/local/mysql/bin/mysqlaliasMySQLadmin=/usr/local/mysql/bin/mysqladmin

最好是在PATH环境变量中加入/usr/local/mysql/bin。例如,如果外壳命令是tcsh,在$HOME/.tcshrc文件中加入下面一行:

setenv PATH ${PATH}:/usr/local/mysql/bin

如果根目录中没有.tcshrc文件,则用文本编辑器创建该文件。

如果你对已有的安装进行升级,请注意安装新MySQL PKG时不会卸载旧的安装目录。遗憾的是,Mac OS X安装器尚未提供功能来正确升级前面安装的软件包。

要想在新安装中使用已有的数据库,你需要将旧数据目录中的内容复制到新的数据目录。执行该操作时,确保关闭新、旧服务器。将以前安装的MySQL数据库文件拷贝过来并成功启动新的服务器后,应当卸载旧的文件以节省硬盘空间。并且,还应当卸掉位于/Library/Receipts/mysql-VERSION.pkg的旧版本Package Receipt目录。

二、MySql管理工具


下载 http://dev.mysql.com/downloads/gui-tools/5.0.html

MySql默认只有用户root并只能在本地登录,使用root登录后,添加其他的用户。

用户root用户登陆
添加一个本地用户,名为username密码为password
GRANT ALL PRIVILEGES ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

添加一个远程用户,名为username密码为password
GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;

添加完用户后要重新启动mysql服务

三、MySql Connector/Net 1.0


http://dev.mysql.com/downloads/connector/net/1.0.html

注意:高版本不能使用;

下载Binaries,no installer版本,解压后在bin文件夹中有MySql.data.dll文件。将此文件拷贝至Assets文件夹下,可以放在任意目录下。然后可在C#的脚本中使用using MySql.Data.MySqlClient;

生成的工程需要将此DLL放置在同级目录下。并可在windows下正常使用;
四、代码
 
using UnityEngine;
using System;
using System.Collections;
using System.Data;
using MySql.Data.MySqlClient;

public class CMySql : MonoBehaviour {
    // Global variables
    private static MySqlConnection dbConnection;
 
     static string host = "192.168.1.100";
     static string id = "mysql";
     static string pwd = "123456";
    
     static string result = "";
    
     void OnGUI()
     {
         host = GUILayout.TextField( host, 200, GUILayout.Width(200));
         id = GUILayout.TextField( id, 200, GUILayout.Width(200));
         pwd = GUILayout.TextField( pwd, 200, GUILayout.Width(200));
         if(GUILayout.Button("Test"))
         {
             string connectionString = "Server="+host+";Database=test;User ID="+id+";Password="+pwd+";Pooling=false";
             openSqlConnection( connectionString );
         }
         GUILayout.Label(result);
     } 

    // On quit
    public static void OnApplicationQuit() {
        closeSqlConnection();
    }
  
    // Connect to database
    private static void openSqlConnection(string connectionString) {
        dbConnection = new MySqlConnection(connectionString);
        dbConnection.Open();
        result = dbConnection.ServerVersion;
        Debug.Log("Connected to database."+result);
    }
  
    // Disconnect from database
    private static void closeSqlConnection() {
        dbConnection.Close();
        dbConnection = null;
        //Debug.Log("Disconnected from database."+result);
    }

    // MySQL Query
    public static void doQuery(string sqlQuery) {
        IDbCommand dbCommand = dbConnection.CreateCommand();
        dbCommand.CommandText = sqlQuery;
        IDataReader reader = dbCommand.ExecuteReader();
        reader.Close();
        reader = null;
        dbCommand.Dispose();
        dbCommand = null;
    }
}

2018-04-19 09:33:55 cjppktc123 阅读数 847

    Unity3d对于数据库这块,编辑器以及PC段的链接,只需要相应的链接语句以及路径即可.

但是移动端的链接相对较麻烦,我个人也看了很多网上的连接教程,但是有失败的,也有能够链接上但是没有数据的,等等问题百出.后面经过自己的尝试以及整理,最终得到了能够完整使用的连接方式.


首先,unity下的Android目录需要按照以下方式配置



assets需要小写,这是符合了Android发布后的目录规则,上述四个文件,缺一不可,分别是连接数据库的Mono.Data.Sqlite,封装好的数据库连接方式,引用后直接使用方法  点这里下载


下载好了,按照上面的路劲配置好之后(数据库代码可以自动创建)

想要清晰明了的查看数据库的话,我这里采用的是Navicat 查看的,可以直接网上下载


当上面的步骤全部做好之后,那么我们就可以来链接数据库了



话不多说,直接上代码分析

public class DataBaseManager  {

    private static DataBaseManager instance;
    public static DataBaseManager Instance
    {
        get
        {
            if(null == instance)
            {
                instance = new DataBaseManager();
            }
            return instance;
        }
    }

    private Text wait;
    private SqliteConnection dbConnection;//数据库链接

    private SqliteCommand dbCommand;//数据库语言解读

    private SqliteDataReader reader;//读取到的数据,有特殊的解读方式

   
    /// <summary>
    /// 通过数据库的名字连入数据库
    /// </summary>
    /// <param name="databasename"></param>
    public void ConnectingDatabase(string databasename)
    {
#if UNITY_EDITOR
        //unity编辑器中
        string appDBPath = Application.dataPath + "/Plugins/Android/assets/" + databasename;
        DataBaseManager.Instance.OpenDB("URI=file:" + appDBPath);



#elif UNITY_ANDROID
        //安卓设备中
        wait = GameObject.Find("Wait").GetComponent<Text>();//这里的wait是我用来在android下提示数据库加载的,可以忽略
         string appDBPath = Application.persistentDataPath + "/" + databasename;
        if (!File.Exists(appDBPath))
        {
            //现用www先从Unity中下载到数据库
            WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + databasename);
          while (!loadDB.isDone)
        {
             wait.text = "等待数据加载中...";
        }
            //拷贝至规定的地方
            File.WriteAllBytes(appDBPath, loadDB.bytes);

        wait.text = "数据加载完成!";
          MonoBehaviour.Destroy(wait.gameObject, 1f);

        }

        DataBaseManager.Instance.OpenDB("URI=file:" + appDBPath);
        


#endif

    }
    //打开数据库
    public void OpenDB(string connectionString)
    {
        try
        {
            if (dbConnection == null)
            {
                dbConnection = new SqliteConnection(connectionString);
                
            }

            dbConnection.Open();

            Debug.Log("Connected to db");
        }
        catch (Exception e)
        {

            string temp1 = e.ToString();
            Debug.Log(temp1);
        }
    }


    //关闭数据库
    public void CloseSqlConnection()
    {
        if (dbCommand != null)
        {
            dbCommand.Dispose();

        }
        dbCommand = null;

        if (reader != null)
        {
            reader.Dispose();

        }
        reader = null;

        if (dbConnection != null)
        {
            dbConnection.Dispose();

        }
        dbConnection.Close();
        dbConnection = null;

        Debug.Log("Disconnected from db");

    } 
public SqliteDataReader ExecuteQuery(string sqlQuery)
    {


        dbCommand = dbConnection.CreateCommand();


        dbCommand.CommandText = sqlQuery;


        reader = dbCommand.ExecuteReader();


        return reader;
    }


    //返回整个表格
    public SqliteDataReader ReadFullTable(string tableName)
    {
        string query = "Select * From " + tableName;
        return ExecuteQuery(query);


    }
}

string appDBPath = Application.dataPath + "/Plugins/Android/assets/" + databasename;
        DataBaseManager.Instance.OpenDB("URI=file:" + appDBPath);  通过路径,链接数据库
 
 if (!File.Exists(appDBPath))
        {
            //现用www先从Unity中下载到数据库
            WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + databasename);
          while (!loadDB.isDone)
        {
             wait.text = "等待数据加载中...";
        }
 
最最重要的地方就是上述代码,Android客户端下面,他的文件会没有放入到assets下,这时先判断如果不存在文件,则将编辑器下的文件复制进入指定位置,记住,这里一定要等他复制完成才能继续操作,无论这边使用协程,还是直接循环等待,一定要把他的数据读取完,才能进行操作,不然你会发现,连上数据库了,但是数据库是一个空的数据库,只有等待加载完成,才是你原来的数据库



到这里其实就可以成功的连上数据库了 ,后面就可以进行数据库的增删改查了,这些都比较简单,就是语言封装起来比较费时


2015-08-11 20:11:53 superlinmeng 阅读数 1198
新建Unity3D项目

新建一个 Plugins文件夹

把所需要的DLL放到 Plugins中

新建C#脚本 命名为ToMysql.cs

 

不多说了 ,直接上代码,很简单  有注释 ,大家一看就明白了

 

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


public class ToMysql : MonoBehaviour {
	
	
 
     public static MySqlConnection dbConnection; /*mysql数据库连接对象*/
     static string host = "";  
     static string id = "";  
     static string pwd = "";  
     static string database = "";
     static string result = "";  
      
     private string strCommand ;  
     public static DataSet MyObj;  
	
	public string connectionString;
	
	public Vector2 pPos;
	public Vector2 pSize;
	
	public DataTable pdatatable;
	
	public DataSet   pDataset;
	
	
	public Vector2 conPos;
	public Vector2 conSize;
	 void Awake()
	{
		
		 host = "127.0.0.1";  /*mysql数据库服务器地址*/
      id = "root";  /*mysql用户名*/
      pwd = "123456";  /*密码*/
      database = "test";/*数据库名*/  
      result = "";  /*mysql版本号信息暂存*/
      
     strCommand = "Select uname from tuser"; 
		
	 /*一些UI按钮的坐标配置信息11*/
	  pPos = new Vector2( 50,50 );
	  pSize = new Vector2(100,35);	
		
		 /*一些UI按钮的坐标配置信息22*/
	  conPos = new Vector2( 300,60 );
	  conSize = new Vector2( 150, 50 );
		
		 /*初始给一个新增员工信息的时候的默认文本框内默认值*/
		 pkey = "100291";
		 name = "姓名";
       sex = "男";
	  age = "25";
	  adress = "家庭详细住址";
	  money = "2800";
	}
	
	
     void OnGUI()  
     {  
		   /*第一次连接到MySQL数据库*/
		   ConnectFirstServer();
		   /*显示连接到的MySQL数据库的版本号信息*/
           GUILayout.Label(result);  
		
		/*主要大列表显示员工信息的修改删除function*/
		   ShowP_GUIData();
		
		
		   /*添加员工信息*/
			AddPerson();
		
		   /*点了修改编辑信息后*/
		  ShowEdit_PersonData();
       }  
  
    /*关闭Unity程序*/
    public static void OnApplicationQuit() 
    {  
        closeSqlConnection();  
    }  
  
	/*第一次连接到MySQL数据库*/
	public void ConnectFirstServer()
	{
		if( dbConnection == null )
		{
		
		  GUI.Button( new Rect(conPos.x ,conPos.y,conSize.x,conSize.y),"数据库Server地址");
		   host = GUI.TextField(new Rect(conPos.x ,conPos.y+50,conSize.x,conSize.y),host );
       
	      	GUI.Button( new Rect(conPos.x ,conPos.y+100,conSize.x,conSize.y),"mysql用户名");
		   id = GUI.TextField(new Rect(conPos.x ,conPos.y+150,conSize.x,conSize.y),id );
          GUI.Button( new Rect(conPos.x ,conPos.y+200,conSize.x,conSize.y),"密码");
           pwd = GUI.TextField(new Rect(conPos.x ,conPos.y+250,conSize.x,conSize.y),pwd );
		
		   GUI.Button( new Rect(conPos.x ,conPos.y+300,conSize.x,conSize.y),"数据库名");
            database = GUI.TextField(new Rect(conPos.x ,conPos.y+350,conSize.x,conSize.y),database );
		
		     connectionString = string.Format("Server = {0};Database = {1}; User = {2}; Password = {3};",host,database,id,pwd);  
         if(GUI.Button(new Rect(conPos.x+180 ,conPos.y+200,conSize.x,conSize.y),"登录数据库"))  
         {  
            openSqlConnection(connectionString);    
            MyObj = GetDataSet(strCommand);

            /*读取数据函数Debug 管理员账号密码*/
            ReaderData();
			/*测试方法Debug 管理员账号密码*/
			ShowDataSet();
			
			/*重新读取p_info表里所有员工信息*/
			SelectPdataSet();
          }   
			
			
			
		}
		
		
		
	}
	
    // Connect to database  
    private static void openSqlConnection(string connectionString) 
    {  
        dbConnection = new MySqlConnection(connectionString);  
		try{
        dbConnection.Open();  
        result = dbConnection.ServerVersion;  /*获得MySql的版本*/
		}
		catch(MySqlException e)
		{
			Debug.Log( e.Message );
			dbConnection = null;
			host  = "服务器连接错";
			id  = "用户名或密码错误";
			pwd = "用户名或密码错误";
		}
		Debug.Log(result);
    }  
     
   /*关闭Mysql连接*/
    private static void closeSqlConnection() 
    {  
        dbConnection.Close();  
        dbConnection = null;  
    }  
      
    /*执行某些mysql语句*/
    public static void doQuery(string sqlQuery) 
    {  
        IDbCommand dbCommand = dbConnection.CreateCommand();      
        dbCommand.CommandText = sqlQuery;  
        IDataReader reader = dbCommand.ExecuteReader();  
        reader.Close();  
        reader = null;  
       dbCommand.Dispose();  
        dbCommand = null;  
    }  
    #region Get DataSet   /*得到一个 dataSet对象*/
    public  DataSet GetDataSet(string sqlString)  
    {   
        DataSet ds = new DataSet();  
        try  
        {  
            MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);  
            da.Fill(ds);  
     
        }  
        catch (Exception ee)  
        {       
            Debug.Log("SQL:" + sqlString + "\n" + ee.Message.ToString());  
			dbConnection = null;
        }  
        return ds;  
    
    }  
    #endregion   

    /*Debug显示管理员账号密码*/
    void ReaderData()
    {
        MySqlCommand mySqlCommand = new MySqlCommand("Select * from tuser;", dbConnection);
        MySqlDataReader reader = mySqlCommand.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                if (reader.HasRows)
                {
                    print("uname:" + reader.GetString(0) + "--upwd:" + reader.GetString(1) );
                }
            }
        }
        catch (Exception e)
        {
           Debug.Log("查询失败了!"+ e.Message );
			dbConnection = null;
        }
        finally
        {
            reader.Close();
        }         
    }

	/*Debug显示管理员账号密码*/
	void ShowDataSet()
	{
		 string commandString = "Select * from tuser";

                /* 创建DataSet命令对象和DataSet*/
		if(dbConnection.State != ConnectionState.Open)
		{
             dbConnection = new MySqlConnection(connectionString);  
		   try
			{
              dbConnection.Open();  
              result = dbConnection.ServerVersion;  /*获得MySql的版本*/
		    }
		    catch(MySqlException e)
		    {
		    	Debug.Log( e.Message );
		      dbConnection = null;
		    }
		
		}
        using(     MySqlDataAdapter DataAdapter = new MySqlDataAdapter(commandString, connectionString))
		{

               DataSet  Dataset = new DataSet();

                /* 填充DataSet对象*/

             DataAdapter.Fill(Dataset, "tuser");

                /*从DataSet获取一个表*/

                DataTable datatable = Dataset.Tables[0];
		     for (int i = 0; i < datatable.Rows.Count; i++)
                {
                   
                    
                   Debug.Log( datatable.Rows[i]["uname"].ToString() );
                    Debug.Log(  datatable.Rows[i]["upwd"].ToString() );
		       }
		}
	}
    
    /*显示员工信息function*/
	void SelectPdataSet()
	{
		 string commandString = "Select * from p_info";

                /* 创建DataSet命令对象和DataSet*/
		if(dbConnection.State != ConnectionState.Open)
		{
           dbConnection = new MySqlConnection(connectionString);  
		try{
        dbConnection.Open();  
        result = dbConnection.ServerVersion;  /*获得MySql的版本*/
		}
		catch(MySqlException e)
		{
			Debug.Log( e.Message );
		}
		
		}
           
		using(     MySqlDataAdapter DataAdapter = new MySqlDataAdapter(commandString, connectionString))
		
		{
			    if(pDataset !=null )
			     {
				     pDataset = null;
			     }
                pDataset = new DataSet();

                /* 填充DataSet对象*/

               DataAdapter.Fill(pDataset, "p_info");

                /*从DataSet获取一个表*/
			    if(pdatatable != null)
			    {
				pdatatable = null;
			    }
                pdatatable = pDataset.Tables[0];
		    
		}
		
		
		
	}
	
	/*主要列表显示员工信息的修改删除function*/
	void ShowP_GUIData()
	{
		if( pdatatable != null )
		{
		    if(pdatatable  == null)
				 return;
			try{
			for (int i = 0; i < pdatatable.Rows.Count; i++)
                {
				    
				
                    GUI.Button(new Rect(pPos.x ,15 ,pSize.x,pSize.y ), "姓名" );
                    GUI.Button(new Rect(pPos.x+100 ,15 ,pSize.x,pSize.y ),  "性别" );
				    GUI.Button(new Rect(pPos.x+200 ,15 ,pSize.x,pSize.y ),  "年龄" );
				    GUI.Button(new Rect(pPos.x+300 ,15 ,pSize.x +200,pSize.y ),   "家庭详细住址" );
				    GUI.Button(new Rect(pPos.x+600,15 ,pSize.x,pSize.y ),   "月工资" );
                   
                    GUI.Button(new Rect(pPos.x ,pPos.y +i*35 ,pSize.x,pSize.y ), pdatatable.Rows[i]["pname"].ToString() );
                    GUI.Button(new Rect(pPos.x+100 ,pPos.y +i*35 ,pSize.x,pSize.y ),  pdatatable.Rows[i]["psex"].ToString() );
				    GUI.Button(new Rect(pPos.x+200 ,pPos.y +i*35 ,pSize.x,pSize.y ),  pdatatable.Rows[i]["page"].ToString() );
				    GUI.Button(new Rect(pPos.x+300 ,pPos.y +i*35 ,pSize.x +200,pSize.y ),  pdatatable.Rows[i]["padress"].ToString() );
				    GUI.Button(new Rect(pPos.x+600,pPos.y +i*35 ,pSize.x,pSize.y ),  pdatatable.Rows[i]["pmoney"].ToString() );
				
				
				   if( GUI.Button(new Rect(pPos.x+710,pPos.y +i*35 ,pSize.x,pSize.y ),  "修改" ))
				   {
					       canEdit_person = true;
					      
					       Debug.Log( pdatatable.Rows[i]["pkey"].ToString() );
					      Edit_Person( pdatatable.Rows[i]["pkey"].ToString() );
					
					      pdatatable = null;
				   }
				  
				  if( GUI.Button(new Rect(pPos.x+810,pPos.y +i*35 ,pSize.x,pSize.y ),  "删除" ) )
				    {
					    DeletePerson( pdatatable.Rows[i]["pkey"].ToString() );
			     	}
		       }
			
			if( pdatatable.Rows.Count>=1)
			{
			
			   if( GUI.Button(new Rect(pPos.x+750,15 ,pSize.x,pSize.y ),   "增加员工信息" ))
		       {
			
					canAddPerson = true;
				    pdatatable = null;
				
			
		        }
			}
				
			}
			catch 
			{
				
				Debug.Log(  "Some Error");
			}
			
		}
		
		
	}
	public string  pkey;
	public string name;
	public string sex;
	public string age;
	public string adress;
	public string money;
	
	public bool canAddPerson;
	public int selGridInt = 0;
	public string[] selsex = new string[] {"男", "女"};
	
		
	
	
	
	public string sqlstr;
	/*添加员工信息的function*/
	void AddPerson()
	{
		if(canAddPerson )
		{
			GUI.Button( new Rect(150 ,conPos.y+100,conSize.x,conSize.y),"员工唯一编号" );
		 pkey = GUI.TextField(new Rect(conPos.x ,conPos.y+100,conSize.x,conSize.y),pkey );
			
       GUI.Button( new Rect(150 ,conPos.y+160,conSize.x,conSize.y),"姓名" );
		 name = GUI.TextField(new Rect(conPos.x ,conPos.y+160,conSize.x,conSize.y),name );
      
       GUI.Button( new Rect(150 ,conPos.y+220,conSize.x,conSize.y),"性别" );
		selGridInt = GUI.SelectionGrid(new Rect(conPos.x ,conPos.y+220,100,30), selGridInt, selsex, 2);
			
		GUI.Button( new Rect(150 ,conPos.y+270,conSize.x,conSize.y),"年龄" );
         age = GUI.TextField(new Rect(conPos.x ,conPos.y+270,conSize.x,conSize.y),age );
			
		GUI.Button( new Rect(150 ,conPos.y+330,conSize.x,conSize.y),"家庭详细住址" );
		   adress = GUI.TextField(new Rect(conPos.x ,conPos.y+330,conSize.x,conSize.y),adress );
			
		 GUI.Button( new Rect(150 ,conPos.y+380,conSize.x,conSize.y),"员工月工资" );
			money = GUI.TextField(new Rect(conPos.x ,conPos.y+380,conSize.x,conSize.y),money );
		  if( GUI.Button(new Rect(conPos.x+280 ,conPos.y+220,conSize.x,conSize.y),"添加此员工信息") )
			{
				if( pkey.Trim()==""|| name.Trim()==""||
					sex.Trim()==""||age.Trim()==""||
					adress.Trim()==""||money.Trim()=="")
				{
					
					 pkey = "有错误请重新输入";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字";
					
					return;
					
				}
				
				if( selGridInt == 0 )
				{
					
					sex = "男";
				}
				if( selGridInt == 1 )
				{
					
					sex = "女";
				}
				
				
				if( isNumberic(age)==false && isNumberic(money)==false )
				{
					
					 pkey = "有错误请重新输入";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字或超过了限制";
					
					  return;
				}
				
				#region /*插入数据*/
				  try{
                   openSqlConnection(connectionString);   
					if( dbConnection.State != ConnectionState.Open)
					{
				   dbConnection.Open();
					}
				    sqlstr = string.Format("INSERT INTO p_info(`pkey`, `pname`, `psex`, `page`, `padress`, `pmoney`) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}')",
					                                          pkey,name,sex,age,adress,money);
                    MySqlCommand cmd = new MySqlCommand(sqlstr, dbConnection);
                    cmd.ExecuteNonQuery();
                    dbConnection.Close();
					Debug.Log("InsertData");
					canAddPerson = false;
					SelectPdataSet();
					
				}
				catch (MySqlException e){
					pkey = "发生错误插入失败";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字或超过了限制";
					
					Debug.Log("信息录入失败" + e.Message);
				}
				#endregion
				
				
				
			}
			
			
			if( GUI.Button(new Rect(conPos.x+280 ,conPos.y+320,conSize.x,conSize.y),"返回") )
			{
				    canAddPerson = false;
					SelectPdataSet();
				
			}
			
		}
			
		
	}
	
	
	
	/*检查输入的是否是数字*/
	public bool isNumberic(string message)
    {
       /*判断是否为整数字符串*/
       /*是的话则将其转换为数字并将其设为out类型的输出值、返回true, 否则为false*/
       int result = -1;   /*result 定义*/
        try
        {
          /*当数字字符串的为是少于4时,以下三种都可以转换,任选一种*/
          /*如果位数超过4的话,请选用Convert.ToInt32() 和int.Parse()*/
 
            result = int.Parse(message);    
            return true;
        }
        catch
        {
            return false;
			Debug.Log("number false");
        }
   }
	
	
	/*删除选中员工信息的方法*/
	void DeletePerson(string Spkey)
	{
		#region /*删除数据*/
				  try{
                   openSqlConnection(connectionString);   
					if( dbConnection.State != ConnectionState.Open)
					{
				   dbConnection.Open();
					}
			            
				    sqlstr = string.Format("Delete from  p_info where pkey='{0}'", Spkey);
                    MySqlCommand cmd = new MySqlCommand(sqlstr, dbConnection);
                    cmd.ExecuteNonQuery();
                    dbConnection.Close();
					Debug.Log("DeleteData");
					
					SelectPdataSet();
					
				}
				catch (MySqlException e){
					
					
					Debug.Log("删除失败" + e.Message);
				}
				#endregion
	}
	
	public bool canEdit_person;
	
	/*传入选中要修改员工的主键pkey,并读取出对应数据给多个字段*/
	void Edit_Person( string mpkey )
	{
		if(canEdit_person)
		{
			
			#region   检索当前选中的数据
			
			 string commandString5 = string.Format("Select * from p_info where pkey='{0}'", mpkey);
			 Debug.Log(  commandString5);
                /* 创建DataSet命令对象和DataSet*/
		if(dbConnection.State != ConnectionState.Open)
		{
            dbConnection = new MySqlConnection(connectionString);  
		    try
				{
               dbConnection.Open();  
                result = dbConnection.ServerVersion;  /*获得MySql的版本*/
		    }
		     catch(MySqlException e)
		     {
			 Debug.Log( e.Message );
		     }
		
		}
           
		using(     MySqlDataAdapter DataAdapter = new MySqlDataAdapter(commandString5, connectionString))
		
		{
			   
               DataSet spDataset = new DataSet();

                /* 填充DataSet对象*/

               DataAdapter.Fill(spDataset, "p_info");

                /*从DataSet获取一个表*/
			    
               DataTable spdatatable = spDataset.Tables[0];
				
				
		        pkey=  spdatatable.Rows[0]["pkey"].ToString() ;
				name =	spdatatable.Rows[0]["pname"].ToString() ;
				age =spdatatable.Rows[0]["page"].ToString() ;
						
				adress=	spdatatable.Rows[0]["padress"].ToString() ;
			      money=spdatatable.Rows[0]["pmoney"].ToString() ;
		}
		
			
			
			#endregion
			
			
			
		
			
			
		}
	}
	
	
	/*点击修改资料按钮后,详细显示当前选中的员工的信息,并提供文本框进行修改*/
	void ShowEdit_PersonData()
	{
		if(canEdit_person)
		{
			/*
		  GUI.Button( new Rect(150 ,conPos.y+100,conSize.x,conSize.y),"员工唯一编号" );
		 pkey = GUI.TextField(new Rect(conPos.x ,conPos.y+100,conSize.x,conSize.y),pkey );
			*/
       GUI.Button( new Rect(150 ,conPos.y+160,conSize.x,conSize.y),"姓名" );
		 name = GUI.TextField(new Rect(conPos.x ,conPos.y+160,conSize.x,conSize.y),name );
      
       GUI.Button( new Rect(150 ,conPos.y+220,conSize.x,conSize.y),"性别" );
		selGridInt = GUI.SelectionGrid(new Rect(conPos.x ,conPos.y+220,100,30), selGridInt, selsex, 2);
			
		GUI.Button( new Rect(150 ,conPos.y+270,conSize.x,conSize.y),"年龄" );
         age = GUI.TextField(new Rect(conPos.x ,conPos.y+270,conSize.x,conSize.y),age );
			
		GUI.Button( new Rect(150 ,conPos.y+330,conSize.x,conSize.y),"家庭详细住址" );
		   adress = GUI.TextField(new Rect(conPos.x ,conPos.y+330,conSize.x,conSize.y),adress );
			
		 GUI.Button( new Rect(150 ,conPos.y+380,conSize.x,conSize.y),"员工月工资" );
			money = GUI.TextField(new Rect(conPos.x ,conPos.y+380,conSize.x,conSize.y),money );
			
			Debug.Log("EditPersonData");
			if( GUI.Button(new Rect(conPos.x+280 ,conPos.y+220,conSize.x,conSize.y),"返回主页") )
			{
					canEdit_person = false;
					SelectPdataSet();
			}
			
			
			 if( GUI.Button(new Rect(conPos.x+280 ,conPos.y+320,conSize.x,conSize.y),"修改员工信息") )
			{
				if( pkey.Trim()==""|| name.Trim()==""||
					sex.Trim()==""||age.Trim()==""||
					adress.Trim()==""||money.Trim()=="")
				{
					
					 pkey = "有错误请重新输入";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字";
					
					return;
					
				}
				
				if( selGridInt == 0 )
				{
					
					sex = "男";
				}
				if( selGridInt == 1 )
				{
					
					sex = "女";
				}
				
				
				if( isNumberic(age)==false && isNumberic(money)==false )
				{
					
					 pkey = "有错误请重新输入";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字或超过了限制";
					
					  return;
				}
				
				#region /*更新数据*/
				  try{
                   openSqlConnection(connectionString);   
					if( dbConnection.State != ConnectionState.Open)
					{
				   dbConnection.Open();
					}
					
				    sqlstr = string.Format("UPDATE p_info SET  pname='{0}', psex='{1}', page='{2}', padress='{3}', pmoney='{4}'WHERE pkey = '{5}'",
					                                          name,sex,age,adress,money ,pkey);
                    MySqlCommand cmd = new MySqlCommand(sqlstr, dbConnection);
                    cmd.ExecuteNonQuery();
                    dbConnection.Close();
					Debug.Log("UpdateData");
					canEdit_person = false;
					SelectPdataSet();
					
				}
				catch (MySqlException e){
					pkey = "发生错误更新失败";
		             name = "姓名";
                     sex = "性别必须为男或女";
	                 age = "年龄必须为数字";
	                 adress = "家庭详细住址";
	                  money = "月工资必须为数字或超过了限制";
					
					Debug.Log("信息录入失败" + e.Message);
				}
				#endregion
				
				
				
			}
			
		}
	}
	
}

  

新建一个 GameObject,将这个脚本拖放到 GameObject对象上

点击运行,输入 

服务器地址:127.0.0.1

用户名:root

密码:123456

需要访问的数据库db名:test

点击  登录数据库

 

 

 

如果登录成功,会看到我们刚才插入的信息

 

点击增加员工信息

 

 

嘿嘿,点击添加此员工信息

 

 

成功!嘿嘿!

 

点击删除《深华东》 试试

 

删除成功!

点击修改  张三的信息

 

修改性别为女,年龄为18,工资为800,点击修改员工信息

 

修改成功!

有的朋友反应,发布无法连接,我这里测试是没有问题,

 

具体请看 ,发布后连接数据库如下图

 

欢迎与我交流Unity3D技术,QQ2360450496