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;
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填入后测试能够正常连接,问题到此结束