一、前言
本文使用的Unity版本为2018.4.26,使用的VS版本为2017专业版,sqlsever使用的是微软官方的开发者版本SQL Server2019,文章末尾会附上案例代码的工程文件以供下载。针对sqlserver的下载和安装可以前往微软官方网站进行SQL Server 安装指南,或许是数据库服务商之前日益激烈的竞争,微软现在针对开发者版本是可以免费使用,而且具备全部的功能,这对开发者来说是一个非常不错的消息。SQLServer下载地址
二、实现
2.1、配置unity,导入Dll文件
这一步非常关键,需要去Unity的安装文件路径下,如“D:\Program Files\Unity2018.4.26\Editor\Data\Mono\lib\mono\2.0”复制如图1所示的Dll文件,这几个文件缺一不可,缺少了任何dll文件在运行或发布的时候都会报错。
然后会出现如图2所示错误,这个错误只需要在Player Setting里设置Api Compatibility Level为.NET 4.x,如图3所示
接下来还会出现如图4所示的错误,只需要将“D:\Program Files\Unity2018.4.26\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api"文件夹下的System.Data.dll删除掉或者,用Unity已经导入到Plugin文件下的System.Data.dll文件覆盖掉即可
如果未添加Mono.Data.Tds.dll、I18N.CJK.dll、I18N.dll和I18N.West.dll程序在编辑状态下不会报错,但是在发布的时候会报错,如未添加Mono.Data.Tds.dll时发布运行不成功,在”C:\Users\username\AppData\LocalLow\CompanyName\ProductName\output_log.txt“的日志文档里显示报错如图5所示
如果未添加 118N.CJK.dll、I18N.dll和I18N.West.dll等文件则在发布时运行程序会报错如图6所示,并且提示“使用了与请求的协议不兼容的地址”,将118N.CJK.dll、I18N.dll和I18N.West.dll等文件放回到Unity的Plugin文件下,崽发布运行的时候只保留了
“使用了与请求的协议不兼容的地址”这一个错误。这个错误时因为崽C#代码中未将服务器的IP地址写出来导致的,如图7所示,只使用了代表本地地址的“."来表示,箭IP地址设置为服务器的IPV4地址即可解决这个问题。
2.2、代码部分
代码实现比较简单,首先,需要崽数据库创建一个表,如图8所示,然后再在C#代码中创建一个类Administrator并且映射这个表
代码如下:
[Table(Name = "Administrator")]
public class Administrator
{
[Column(IsPrimaryKey = true, Storage = "ID")]
public int ID
{
get;
set;
}
[Column(Storage = "Account")]
public string Account
{
get;
set;
}
[Column(Storage = "Password")]
public string Password { get; set; }
}
然后,就是打开数据库,对数据库的操作使用Linq代码,如下面的代码,使用了Linq的查询代码
[SerializeField] Text textWarn;
private string sqlAddress = "server=.;database=JXHKVRProject;uid=sa;pwd=123456";
private SqlConnection sqlCon;
// Start is called before the first frame update
void Start()
{
sqlCon = new SqlConnection(sqlAddress);
sqlCon.Open();
if (sqlCon.State == ConnectionState.Open)
{
string tempStr = "数据库连接成功";
Debug.Log(tempStr);
textWarn.text = tempStr;
}
else
{
string tempStr = "数据库连接失败";
Debug.Log(tempStr);
textWarn.text = tempStr;
}
DataContext tempDC = new DataContext(sqlCon);
var tempData = from tempAdmins in tempDC.GetTable<Administrator>() where tempAdmins.Account == "bhjx" select tempAdmins;
foreach (var item in tempData)
{
Debug.Log("密码:" + item.Password);
}
sqlCon.Close();
}
三、总结
1、配置文件的时候一定要注意每一个细节,每个文件都不能少,不能因为编辑状态下可以运行就无视了;
2、在写代码的时候可能需要手动添加引用空间,使用VS编译器有些无法智能提示并添加;
3、使用Ling to sql的代码时延迟执行的;
4、配置Dll文件的时候可能会需要删掉或者覆盖Unity安装文件里的文件,不要犹豫真的是这样;
5、工程下载地址