unity3d 连接MSSql

今天想到UNITY与MSSQL,就测试了一下。

    我先在MSSQL中建立了一张表叫“Say”,Say有一个字段info里面存放着我要在unity3D中要显示出来的内容.在网上搜索了一些,都是说先从Unity\Editor\Data\Frameworks\Mono.framework中复制出System.Data.dll文件然后在unity3D项目中导入。

    很不幸,我用的是Unity3D 3.3版本,所以...就找不到他们说的DLL,这个想法先断了断,我想,如果能导入DLL,为什么我不自己写一个DLL导入进去呢,SQL操作在DLL中完成就可以了。我在Unity中只需要调用。

    于是,我便写了一个类:

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient;

namespace SayHello {     public class sayHello     {       

            public DataSet say(){             string Conn = "server=127.0.0.1;database=testsql;uid=sa;pwd=sa";             SqlConnection conn = new SqlConnection(Conn);             string sSql = "select * from say";             SqlDataAdapter da = new SqlDataAdapter(sSql, conn);             DataSet ds = new DataSet();             da.Fill(ds);

            conn.Close();             return ds.Tables[0].Rows[0][0].ToString();         }     } }

 

    然后我用这个类生成了一个DLL,SayHello.dll,再Unity3D中这样导入.

首先将SayHello.dll复制到Assets文件夹下,然后在Unity3D使用using导入,就像是这样:

 

using SayHello;

 

然后在Start中这样写:

 

 void Start () {   sayHello my = new sayHello();   print(my.testsql());  }

 

    如果是SQL2000版本,要注意一个问题,必须升级到SP4版本,否则会出异常,异常描述是:目标机器积极拒绝连接。这是因为MSSQLSP4以下版本不可以外连。这点需要注意。

    在平时处理数据中,不可能一个方法只返回一条string,这是不能接受的。但是我们在Unity3D中又没有DataSet,如何接收它呢?

    没办法,想想那个DLL,就算改版了也要找吧,其实只是变了个位置而已,最后还是找到这个DLL了。

接着我直接在Unity3D中做了一个直连数据库,代码我就不放了,光是定义SqlConnection的时候就已经出错了,说是什么版本、数据集的错误。我直接就无视这个套路了。反正已经能够定义接收的变量了

    然后是这样,修改了return,直接return ds;

在Unity3D中,我是这样写的:

using UnityEngine; using System.Collections; using SayHello; using System.Data; //这里必须要找到System.Data.dll才能导入 public class MySayHello : MonoBehaviour {

 // Use this for initialization  void Start () {   sayHello my = new sayHello();   DataSet ds = my.testsql();   for(int i=0;i<ds.Tables[0].Rows.Count;i++)   {    print(ds.Tables[0].Rows[i][0].ToString());   }  }    // Update is called once per frame  void Update () {     }

 

我的控制台输出了:

Hello My baby!

Hello Heyours

 

--------------------------------------------------------------------------------------------------

另外,我觉得这样直连非常的不好,正确的做法,至少是由客户端与服务器建立连接、或者说建立关系,客户端发送请求,由服务端操作数据库,不然……万一有某些大神,通过客户端得到数据库帐号密码。。想到这,我蛋猛的抽动了一下。。

 - -#。。。

 

欢迎各位脚本大神加群3222603 方便谈论、交流~

posted @ 2013-10-15 18:20  阿su  阅读(411)  评论(0编辑  收藏  举报