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制作途径。能够很好得做出自己想要的效果。
我总结的基本就这么多了,有不足的地方欢迎大家批评指正!!!谢谢~~~~~~~~
Unity中对SQL数据库的操作的更多相关文章
- Eclipse连接到My sql数据库之前操作
Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...
- 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET
今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...
- django 中连接mysql数据库的操作步骤
django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...
- 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...
- SQL数据库简单操作
sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...
- Eclipse连接到My sql数据库的操作总结/配置数据库驱动
Eclipse连接到MYSQL数据库的操作 (自己亲测,开始学习Eclipse(我的Eclipse版本是4.5.2,Jdbc驱动器的jar包版本是5.1.7,亲测可以使用)连接到数据库的时候,发现网上 ...
- java通过反射拿到mybatis中的sql语句并操作
private static final int MaxBatchLength = 100; public void updateBatch(List<T>list, BaseMapper ...
- iOS中 DataBase SQL数据库 UI_高级
SQL(Structured query Lauguage) :结构化 查询 语言 1.创建表格的SQL语句 create table if not exists Teacher(tea_id int ...
- SQL数据库的操作,表的操作
数据库定义语言(DDL):用于对数据库及数据库中的各种对象进行创建,删除,修改等操作 (1)create:用于创建数据库或数据库对象 (2)alter:用于对数据库或数据库对象进行修改 (3)drop ...
随机推荐
- VS下控制台执行保持(不要一闪而过)
曾经上课的时候是用VC++6.0来学习编程的,编完打印出来的东西就直接显示在控制台上.而在Visual Studio下会出现控制台一闪而过的情况.这个问题事实上是非常好解决的.方法有多种.以下列举两种 ...
- JDBC 元数据信息 getMetaData()
数据库元数据信息: import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.SQLExcept ...
- ubuntu——printk()函数总结,关于日志文件
我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况. 对程序的调试起到了很重要的作用. (下文中的日志级别和控制台日志控制级别 ...
- Cookie技术
u 常用的API 创建Cookie对象 Cookie(String name, String value) ->以指定数据创建Cookie对象 设置Cookie对象 void setMa ...
- [Asp.net]缓存之页面缓存,控件缓存,缓存依赖
写在前面 上篇文章介绍了缓存的基本概念及用途,另外也举了一个简单的例子,数据缓存(将一些耗费时间的数据加入到一个对象缓存集合中,以键值的方式存储.可以通过使用Cache.Insert()方法来设置缓存 ...
- 使用rman备份异机恢复数据库
一.RMAN备份源库注意点: 最好保留rman备份日志 $rman target / log=backup.log RMAN>run { allocate channel t1 type dis ...
- ASP.NET给DataGrid,Repeater等添加全选批量删除等功能
很多情况下,在管理或者查看列表的时候我们需要很需要“全选”这个功能,这在ASP.NET中是非常容易实现的,下面我就将演示一点小代码实现这一功能. 实现全选的还是js的一个小函数: [code] ...
- RabbitMQ php 使用
RabbitMQ是一个开源的基于AMQP(Advanced Message Queuing Protocol)标准,并且可靠性高的企业级消息系统,目前很多网站在用,包括reddit,Poppen.de ...
- Jquery 大纲
1,核心 核心函数 对象訪问 数据缓存 队列控制 插件机制 多库共存 2.选择器 基本选择器 层级 基本 内容 可见性 属性 子元素 表单 表单对象属性 3.文档处理 内部插入 外部插入 包裹 替换 ...
- J2EE学术交流感悟——分层
学术交流进行了一周,是关于J2EE的学术报告. 目的是让我们在学习的时候对"所学知识"有一个宏观的认识. 開始是以为环绕"J2EE"进行解说,怕自己没有 ...