注1:游戏《坦克大战》的所有素材均来自网上,仅作学习交流使用。有不妥之处,欢迎在下方评论指出。

注2:《坦克大战》是小白根据网上的教学视频来模仿制作而成,SQL SERVER数据库的连接仅作为学习用途,可能毫无商业上或者实际开发中的意义。

先来看看成品:

在unity中连接数据库安全么 unity如何连接数据库_游戏

本文着重介绍如何连接数据库,关于游戏整体的控制及UI制作过程会在另外一篇博客中介绍。

废话不多说,直接开始我们的实验:

###第一步:正确配置你的SQL SERVER 在这里小白使用的是SQL SERVER2012版本,2008以上的版本差别不大。 我们先使用window验证方法登录我们的数据库

选择对象资源管理器中你本地的数据库(也就是第一项),右键属性,在安全性下选择SQL SERVER和WINDOWS身份验证模式

顺便在本地数据库中建立一个用于你的游戏的数据库,表的建立需要根据你的游戏实际需要开发什么功能而定

然后打开你的SQL Server 配置管理器,并把Browser启动

把TCP/IP打开,右键属性,正确配置你的1433端口(IP1、IP10、IPALL全部填1433,活动和已启用都选是)

不清楚的同学可以参考这篇博文:SQL Server 2012开启TCP/IP登录,并且启用默认的1433端口

重新启动SQL SERVER,至此我们已经配置完成啦~


###第二步,用VS编写代码连接我们的数据库

写代码之前,把这几个文件的引用搜索出来(不然发布游戏之后将不能连接上数据库)

具体路径在:安装目录:\Unity3d\Editor\Data\Mono\lib\mono\2.0

然后把这四个文件的引用放到Asset下:

接着在脚本中编辑我们的代码:注意:ip是本地的ip地址,默认为127.0.0.1;用户名密码默认为sa和123456,若修改过该值以修改值为准!

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


public class 类名: MonoBehaviour {

	private string ip = "127.0.0.1";

    private SqlConnection connection ;

    private string databaseName = "Unity3d DataBase";   //数据库的名字

    private string ID = "sa";             //用户的账号

    private string pwd = "123456";                //用户的密码

    private string sqlString;

    // Use this for initialization
    void Start()
    {
		 
          //连接SQL
          sqlString = @String.Format("server = {0};database = {1};uid = {2};pwd = {3};", ip, databaseName, ID, pwd);
 
    }
}

封装SQL的增删改查方法,注意每次调用方法都要实例化一个SqlConnection的实例并调用open()方法,否则会出现空指针异常!

public void ToSqlConnect()
    {
        //每次进行sql操作都要创建并打开一个sqlConnection,防止sqlConnection被占用
        connection = new SqlConnection(sqlString);
        connection.Open();
    }

    //插入采用全匹配形式(插入的内容必须完全匹配表格的列名)
    public  DataSet sqlInsert(string values,string tablename)
    {
        ToSqlConnect();
        string sentense = " insert      into  " + tablename + " values (" + values + ")";
        SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
        DataSet ds = new DataSet();
        _adapter.Fill(ds, tablename);          

        return ds;
    }

    //无条件的查询语句
    public DataSet sqlCheck(string something,string tablename)
    {
        ToSqlConnect();
        string sentense = " select "+something+"  from  "+tablename;
        SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
        DataSet ds = new DataSet();
        _adapter.Fill(ds, tablename);

        return ds;
    }

    //有条件的查询语句
    public DataSet sqlCheck_Condition(string something, string tablename,string condition)
    {
        ToSqlConnect();
        string sentense = " select " + something + "  from  " + tablename+" where "+condition;
        SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
        DataSet ds = new DataSet();
        _adapter.Fill(ds, tablename);

        return ds;
    }

    public DataSet sqlDelete_Condition(string tablename,string condition)
    {
        ToSqlConnect();
        string sentense = "delete  from  " + tablename + " where " + condition;
        SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
        DataSet ds = new DataSet();
        _adapter.Fill(ds, tablename);

        return ds;
    }

    public DataSet sqlUpdate_Condition(string something,string tablename,string condition)
    {
        ToSqlConnect();
        string sentense = "update " + tablename + " set " + something + " where " + condition;
        SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
        DataSet ds = new DataSet();
        _adapter.Fill(ds, tablename);

        return ds;
    }

如果需要输出DataSet里面的结果,调用 DataSet的实例.Tables[0].Rows[xx行][xx列]就可以了!

就是这样,我们成功在U3D连接上了SQL SERVER数据库了!

小白还用它来做了个注册和登录系统,看看我的成品:

在unity中连接数据库安全么 unity如何连接数据库_在unity中连接数据库安全么_02


上述方法有任何不妥的地方欢迎在下方的评论区指出哦,谢谢!