Unity链接本地SQLServer并读取数据

Unity可以使用sqlserver获取数据并使用,网上有很多类似的博客内容基本一致,但是实际使用过程中可能出现各种问题,经过测试现记录成功链接数据库的方法。

  • 链接数据库前的准备

1.找到unity的安装目录找到以下几个dll文件:(地址为Editor\Data\Mono\lib\mono\unity)

I18N、 I18N.CJK、 I18N.West 、System.Data

导入到unity中

2.unity脚本中引入

System.Data;
System.Data.SqlClient;

  • 链接本地sqlserver
using UnityEngine;
using System.Data;
using System.Data.SqlClient;

public class SqlLink : MonoBehaviour {
//需要挂载在object上的单例脚本
    public static SqlLink Instance {
        get;
        private set;
    }
    SqlConnection con = null;
    SqlDataAdapter sda = null;
    string sqlAddress;

    private void Awake() {
        DontDestroyOnLoad(gameObject);
        Instance = this;
    }
    // Use this for initialization
    void Start() {
        //数据库名,用户名,密码  
        //在实际使用中server得值需要是通过cmd的ipconfig命令获取到的ipv4地址,即本地服务器的地址,该地址可能会因为动态ip而改变从而造成输入错误的IP使链接超时,uid在数据库安装时一般默认为sa
        sqlAddress = "server =192.168.0.103;database=ThinkGearDemo;uid=sa;pwd=412355al";
        con = new SqlConnection(sqlAddress);
        con.Open();
        if (con.State == ConnectionState.Open) {
            print("Connect  success!");
        } else {
            print("Connect Failure!");
        }
        ReSetLast();
    }

    string sql;
    DataSet ds;
    //获取数据库中某个表中的某个值
    float GetSpeed() {
        //数据库操作语句
        sql = "select * from SQLValue";
        //数据库操作
        sda = new SqlDataAdapter(sql, sqlAddress);
        //结果集
        ds = new DataSet();
        //将查询的结果放入结果集
        sda.Fill(ds, "SQLValue");
        float temp = (int)(ds.Tables[0].Rows[0][0]);
        return temp;
    }

如果不使用IP地址,官方给出的参数是server=local,但是并不起作用,原因未知,目前只能使用ip地址的方法链接到本地sqlserver服务器

用 IP 能连接数据库,用主机名却不行

hosts文件的位置: C:\windows\system32\drivers\etc 文件夹中找到Hosts文件并用记事本打开 
添加: 
ip      机器名 

保存后再试 

经过检查host文件包含localhost的地址映射(为:127.0.0.1,该地址为默认的本地ip地址),猜想sqlAddress 中server只接受ip格式的地址,将127.0.0.1填入后测试能够正常连接,问题到此结束

你可能感兴趣的:(Unity引擎)