Unity实用小工具或脚本——使用Linq to sql以对象形式操作SqlServer数据库

一、前言

        本文使用的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文件在运行或发布的时候都会报错。

图1

 然后会出现如图2所示错误,这个错误只需要在Player Setting里设置Api Compatibility Level为.NET 4.x,如图3所示

图2
图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文件覆盖掉即可

图4

 如果未添加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所示

图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地址即可解决这个问题。

图7

 2.2、代码部分

       代码实现比较简单,首先,需要崽数据库创建一个表,如图8所示,然后再在C#代码中创建一个类Administrator并且映射这个表

图8

代码如下:

    [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、工程下载地址

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值