Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

时间:2022-11-10 11:28:50

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

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

先来看看成品:
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

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

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

第一步:正确配置你的SQL SERVER

在这里小白使用的是SQL SERVER2012版本,2008以上的版本差别不大。
我们先使用window验证方法登录我们的数据库

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

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

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

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

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

然后打开你的SQL Server 配置管理器,并把Browser启动
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

把TCP/IP打开,右键属性,正确配置你的1433端口(IP1、IP10、IPALL全部填1433,活动和已启用都选是)
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

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

重新启动SQL SERVER,至此我们已经配置完成啦~
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)


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

写代码之前,把这几个文件的引用搜索出来(不然发布游戏之后将不能连接上数据库)
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

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

然后把这四个文件的引用放到Asset下:
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)

接着在脚本中编辑我们的代码:
注意: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数据库了!
小白还用它来做了个注册和登录系统,看看我的成品:
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)


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