Unity中将学生成绩更新到MySQL数据表中
[*]前言介绍
[*]数据库的创建
[*]代码实现
前言介绍
当学生完成答题后,需要将成绩更新到对应的数据库中。在登录场景中场景中使用了 DontDestroyOnLoad( )函数,使得登录以后的场景中都会显示学号与姓名。在保存成绩时,会根据学号(唯一标识),找到该学生的信息,并更新成绩数据。
using UnityEngine;
public class DontDestroyGam : MonoBehaviour//加载场景时不摧毁该物体
{
public static DontDestroyGam instance = null; //为这个类创建实例
void Awake()
{
if (instance == null) { instance = this; } //为这个类创建实例
else if (instance != this) { Destroy(gameObject); } //保证这个实例的唯一性
DontDestroyOnLoad(gameObject); //加载场景时不摧毁
}
}
将DontDestroyGam脚本挂载到显示学号与姓名的物体上,这样就可以在所有场景都会显示该学生姓名与学号了。
数据库的创建
图示学生信息表的创建
图示表中数据的添加
代码实现
在编写数据库交互代码时,建议先在MySQL Command Line Client中编写满足我们需求的SQL语句,再将测试正确的语句编写到C#中即可。
图示更新SQL语句的编写
更新语句格式: update <表名> set <插入的列>=值 where (条件);
例:update studentinfo set scorea=100 where studentid=&#39;11111&#39;;
说明:将studentinfo 表中,studentid等于&#39;11111&#39;的行中的scorea属性值设置为100。
图示更新后的表
InsertScore脚本
using MySql.Data.MySqlClient;
using UnityEngine;
using UnityEngine.UI;
public class InsertScore : MonoBehaviour
{
private string host = &#34;127.0.0.1&#34;;//IP地址
private string port = &#34;3306&#34;;//端口号
private string userName = &#34;root&#34;;//用户名
private string password = &#34;123456&#34;;//密码
private string databaseName = &#34;environmentalartdesignschemas&#34;;//数据库名称
private MySqlAccess mysql; //封装好的数据库类
private string StudentID;
void Start()
{
mysql = new MySqlAccess(host, port, userName, password, databaseName);
StudentID = GameObject.Find(&#34;InfoPanel/StudentID&#34;).transform.GetComponent<Text>().text;//获取登录的学生学号
}
public void ButDown()//按下按钮时,将学生成绩更新为50
{
InsertScoreA(50);
}
private void InsertScoreA(int scoreA)
{
mysql.OpenSql();
string strClear = string.Format(&#34;update studentinfo set scorea = &#39;{0}&#39; where studentid = &#39;{1}&#39;;&#34;, scoreA, StudentID);
MySqlCommand cmd = new MySqlCommand(strClear, mysql.mySqlConnection);
MySqlDataReader dataReader = cmd.ExecuteReader();
dataReader.Close();
mysql.CloseSql();
}
}
图示学生的姓名与学号
将InsertScore脚本中的ButDown()方法注册到点击的按钮上,即可。
页:
[1]