Unity中对SQL数据库的操作

在Unity中,我们有时候需要连接数据库来达到数据的读取与储存。而在.NET平台下,ADO.NET为我们提供了公开数据访问服务的类。客户端应用程序可以使用ADO.NET来连接到数据源,并查询,添加,删除和更新所包含的数据。

对于ADO.NET,需要了解到Connection,Command,DataReader,DataAdapter,DataSet这几个对象,他们是操作数据库的重要对象。下面简要得介绍下这几个对象的作用以及功能(以SQL为例)。

1、Connection:它是建立应用程序与数据库之间的连接通道,起到连接数据库的功能。其访问形式根据数据库的类型而定。以SQL为例,则连接类型为SqlConnection。这种连接需要引入相应数据库的命名空间,这里我们需要引入System.Data.SqlClient。想要引入这个命名空间还需要System.Data.dll文件,就在Unity安装源目录下即可找到,复制导入Unity的Asset即可。
写法如下:

//声明一个字符串用于存储连接数据库字符串
        string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";
        SqlConnection con = new SqlConnection(s);
        con.Open();

这样数据库的连接就打开了。

2、Command:当应用程序建立与数据源的连接后,就需要Command对象来执行命令并从数据源中返回结果。它是一个数据命令对象,主要功能就是向数据库发送查询、更新、删除、修改操作的SQL语句。这边需要讲下它执行SQL的几种方法:ExecuteNonQuery方法,该方法是返回受影响的行数可用于统计,(如需进行存储过程则需更改CommandType的属性)。

写法如下:

//声明一个字符串用于存储连接数据库字符串
        string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";
		SqlConnection con = new SqlConnection(s);
        con.Open();
		//创建SqlCommand对象,并指定其使用con连接数据库
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
		//设置CommandText,设置其执行SQL语句
	    cmd.CommandText="update Table_1 set 资产=1000 where 性别=‘女‘";
		int i = Convert.ToInt32 (cmd.ExecuteNonQuery ());

		print ("查询到"+i+"个女性");

ExecuteScalar方法,返回结果集合的第一行的第一列,常用语统计数据数量,用法如下:

		//声明一个字符串用于存储连接数据库字符串
        string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";
		SqlConnection con = new SqlConnection(s);
        con.Open();
		//创建SqlCommand对象,并指定其使用con连接数据库
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
		//设置CommandText,设置其执行SQL语句
		cmd.CommandText="select * from Table_1 where 性别=‘女‘";
		int i = Convert.ToInt32 (cmd.ExecuteScalar ());
		print ("查询到"+i+"个女性");

ExecuteReader方法,返回一个SqlDataReader对象,可进行数据的读取,其用法如下:

		//声明一个字符串用于存储连接数据库字符串
        string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";
		SqlConnection con = new SqlConnection(s);
        con.Open();
		//创建SqlCommand对象,并指定其使用con连接数据库
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
		//设置CommandText,设置其执行SQL语句
		cmd.CommandText="select * from Table_1";
		SqlDataReader st = cmd.ExecuteReader ();
		while (st.Read())
		{
			print(st[0].ToString());
		}
		cmd.Dispose ();

上面的功能就是输出表格第一列的所有内容。

3、DataReader:这个就不做解释了,就是使用ExecuteReader 中返回的对象,具体形式上面已经写出。

4、DataAdapter:数据适配器,是DataSet与数据源之间的桥梁。它有两种工作形式:一种是通过Command对象执行SQL语句,从数据源中检索数据,并将检索到的数据填充到DataSet对象,还有一种是把对DataSet对象所做的更改写入数据源(为了方便,下面以vs的windows应用程序为例来展现其具体用法,因为其DataGridView能够很好的展现表格数据)。其第一种用法如下(也就是填充DataSet数据集):

	//声明一个字符串用于存储连接数据库字符串
        string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";
		SqlConnection con = new SqlConnection(s);
		//创建SqlCommand对象,并指定其使用con连接数据库
		SqlCommand cmd = new SqlCommand("select * from Table_1",con);
		//创建SqlDataAdapter对象
		SqlDataAdapter sda = new SqlDataAdapter ();
		//指定Command
		sda.SelectCommand = cmd;
		//创建DataSet对象
		DataSet ds = new DataSet ();

		sda.Fill (ds);
		DataGridView.DataSource = ds.Tables [0];

这里是使用DataAdapter对象的Fill方法填充DataSet数据集,Fill方法使用Select语句从数据源中检索数据。需要注意的是,与Select命令关联的Connection对象必须有效,但不需要将其打开。

还有一种用法就是更新数据源,就是使用DataAdapter的Update方法,可以将DataSet中修改过的数据及时地更新到数据库中。用法如下:

       SqlConnection con = null;
        SqlDataAdapter sda;
        DataSet ds;
        private void button1_Click(object sender, EventArgs e)
        {
            con = new SqlConnection("server=localhost;database=hasion;uid=sa;pwd=hasion");
            //SqlCommand com = new SqlCommand("select * from Table_1", con);
            sda = new SqlDataAdapter("select * from Table_1", con);
           // sda.SelectCommand = com;
            ds = new DataSet();
            sda.Fill(ds, "cs");

            dataGridView.DataSource = ds.Tables[0];
        }

        private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //显示每行数据
            textBox1.Text = dataGridView.SelectedCells[0].Value.ToString();
            textBox2.Text = dataGridView.SelectedCells[1].Value.ToString();
            textBox3.Text = dataGridView.SelectedCells[2].Value.ToString();
            textBox4.Text = dataGridView.SelectedCells[3].Value.ToString();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //创建一个DataTable
            DataTable dt = ds.Tables["cs"];
            //把表机构加载到Table_1中
            sda.FillSchema(dt, SchemaType.Mapped);
            //创建DataRow,并设置DataRow中的值
            DataRow dr = dt.Rows.Find(textBox1.Text.Trim());

            dr["sex"] = textBox2.Text.Trim();
            dr["age"] = textBox3.Text.Trim();
            dr["money"] = textBox4.Text.Trim();

            //实例化一个SqlCommadnbuilder
            SqlCommandBuilder cmb = new SqlCommandBuilder(sda);

            //更新数据库
            sda.Update(dt);

        }

这样就可以对数据库中的数据进行修改了。

5、DataSet:其实上面已经用到了这个对象,他是整个体系的核心,其数据来源于数据库或者XML,为了从数据库中获取数据,需要使用数据适配器从数据中查询数据。

C#连接数据库基本原理和方法就是上面这些了。以上的这些一般在连接数据库中都会用得到。这些也是我自己通过看书琢磨出来的一些东西,都是基础的部分,更为复杂的数据库连接则需要具体情况具体对待。

下面举个例子:下图是在SQL中建立的一个简单的表格

在Unity中,我们如何将读取到的数据呈现出来,利用上面的那些完全可以做到。下面贴出主要方法,仅供参考:

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

public class SQLConnection : MonoBehaviour {

	SqlConnection con=null;
	SqlDataAdapter sda=null;

	//接受数据变量
	private string str;

	void Start()
	{
		//创建连接
		con = new SqlConnection ("server=localhost;database=hasion;uid=sa;pwd=hasion");
		//执行sql
		sda=new SqlDataAdapter ("select * from Table_1", con);

		//实例化数据集,并写入查询到的数据
		System.Data.DataSet ds = new System.Data.DataSet ();
		sda.Fill (ds, "table");

		//按行和列打印出数据
		for (int i=0; i<ds.Tables[0].Rows.Count; i++) {

			for(int j=0;j<ds.Tables[0].Columns.Count;j++)
			{
				str+=ds.Tables[0].Rows[i][j].ToString().Trim()+"    ";
				if(j==ds.Tables[0].Columns.Count-1)
				{
					print(str);
					str="";
				}
			}
		}
	}

}

脚本执行之后,会打印出下面的结果:

数据既然能够呈现出来,我们就可以进行其他进一步的操作了,比如制作表格,程序中的逻辑控制啊 等等很多功能,这些等以后遇到了 在具体问题 具体对待了。

当然sql的语句有很多,增删改查都可以这样操作,然后再配合Unity的GUI或者NGUI等等UI制作途径。能够很好得做出自己想要的效果。

我总结的基本就这么多了,有不足的地方欢迎大家批评指正!!!谢谢~~~~~~~~

时间: 2024-08-04 14:08:32

Unity中对SQL数据库的操作的相关文章

2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET

今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET Framework版本与位数所对应的压缩包,里面就会有该文件了). 在所在cs文件中加入using System.Data.SQLite; 定义两个string变量:ConStr.SqlStr,分别用于SQLite的连接字符串与SQL语句. 定义SQLiteConnection变量Conn,用于连

django 中连接mysql数据库的操作步骤

django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm02', # 库的名字 'USER':'root', # 数据库的用户名 'PASSWORD':'666', # 数据库的密码 'HOST':'127.0.0.1', 'PORT':3306, } } 2 项目文件夹下的init文件中写上下面内容,用pymysql替

Eclipse连接到My sql数据库的操作总结

Eclipse连接到My sql数据库的操作 (自己亲测,开始学习Eclipse(我的Eclipse版本是4.5.2,Jdbc驱动器的jar包版本是5.1.7,亲测可以使用)连接到数据库的时候,发现网上有好多经验,但是发现网上的出现很多错误,故此发表此博客,希望对大家有所帮助) 1:首选你需要下载Jdbc驱动器(mysql-connector-java-5.1.7-bin.jar)这个文件(百度云盘http://pan.baidu.com/s/1hs9DxS4,密码c22r) 下载上面那个文件也

SQL数据库简单操作

sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured Query Language, 结构化查询语言,对数据库进行操作 * sql非过程性语言,不需要依赖于其他的条件就可以运行 ** 比如 在java里面 *** if(a > 5) { System.out..... } (3)sql的分类 第一类:DDL (数据定义语言) * 创建数据库,创建数据

Eclipse连接到My sql数据库之前操作

1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/limitWmbm  密码ny3a 2:下载完成后按照步骤进行安装,这里不多做绪论,一般是按照默认即可,根据提示操作,没有出现很难的步骤,安装需要一段时间,安装好过后,就可以使用了,可以先选择使用默认的命令行模式My sql 5.7 Command line Client单击打开,需要输入你设置的密码就可以打开 3:如果第二步,你打开的操作出现错误,输入密码闪退

sas中的sql(5) 纵向操作数据集 Except、Intersect、Union、OuterJoin

SQL进行纵向操作的基本语法 proc sql; select * from table1 set-operator <all> <corr> select * from table2 set-operator <all> <corr> select * from table3; 1:几种set操作符 Except.Intersect.Union.OuterJoin Except.Intersect.Union三种set符号是默认进行unique处理,当进行

Eclipse连接到My sql数据库的操作总结/配置数据库驱动

1:首选你需要下载Jdbc驱动器(mysql-connector-java-5.1.7-bin.jar)这个文件 (百度云盘http://pan.baidu.com/s/1hs9DxS4,密码c22r) 2:下载好上面的Jdbc驱动器后,就可以开始动手操作了, 首先打开Eclipse,创建一个Project, 我的工程的名字叫做demo,右击工程demo,然后new找到Floder,然后如图 然后将下载好Jdbc驱动器粘贴到这个lib目录下面,然后点击刚才粘贴的那个jar包,找到build pa

从案例中学习SQL数据库优化

下载地址:百度网盘下载 课程目录: 1.从案例中推导SQL优化的总体思路与误区2.从案例中分析体系结构如何左右SQL性能3.从案例中体验逻辑结构如何影响SQL优化4.从案例中探寻表设计对SQL优化的重要性5.从案例中明白索引是如何让SQL运行飞快6.从案例中体会索引让SQL举步维艰的一面7.从案例中体会函数及位图索引与SQL优化8.从案例中洞察表连接与SQL优化之间关系9.从案例中探讨该如何分析读懂析执行计划10.从案例中弄清如何正确选择SQL性能工具11.从案例中学习如何进行不改写SQL的优化

unity中使用本地数据库sqlite

sqlite的安全性没用mySql高,因为sqlite不用创建用户,以及权限设置,sqlite是单机数据库,功能简约,小型化,MySql试用于服务器数据量大功能多需要安装,例如网站访问量比较大的数据管理 其实MySQL与Sqlite中的数据库操作函数基本上都一样,没什么区别,主要区别就是权限和库大小 注意:在使用这个sqlite数据管理时,也要把,几个需要的动态库放到Plugins里面(Mono.Data.Sqlite,   sqlite3,   System.Data)这几个动态库百度都能搜到