一.準備工做c++
(1)Unity2018.3.14使用MySQL須要導入如下dll文件,注意文件的.net版本。sql
Renci.SshNet / MySql.Data / Google.Protobuf / BouncyCastle.Crypto數據庫
(2)進行交互前瞭解數據庫基本的增刪改查語句網絡
->增:insert into 表名 (數據1,數據2,數據3,......) values ('值1','值2','值3',......)工具
->刪:delete from 表名 where 限制條件spa
->改:update 表名 set 目標值 where 限制條件 .net
->查:select 數據1 from 表名 where 限制條件orm
->建表:create table 表名 (數據1 類型,數據2 類型,數據3 類型,......)server
->刪表:drop table 表名對象
(3)新建腳本注意引入命名空間
二.腳本編寫
(1)數據庫功能封裝(能夠將核心sql語句一併進行封裝,而後在調用時傳參,這裏爲了提升可讀性只封裝基本實現方法)
public class SqlAccess {
public static MySqlConnection mySqlConnection;
//數據庫名稱
public static string database = "daybreak";
//數據庫IP
private static string host = "localhost";
//用戶名
private static string username = "root";
//用戶密碼
private static string password = "root";
public static string sql = string.Format("database={0};server={1};user={2};password={3};port={4}",
database, host, username, password, "3306");
public static MySqlConnection con;
private MySqlCommand com;
#region BaseOperation
/// <summary>
/// 構造方法開啓數據庫
/// </summary>
public SqlAccess()
{
con = new MySqlConnection(sql);
OpenMySQL(con);
}
/// <summary>
/// 啓動數據庫
/// </summary>
/// <param name="con"></param>
public void OpenMySQL(MySqlConnection con)
{
con.Open();
Debug.Log("數據庫已鏈接");
}
/// <summary>
/// 建立表
/// </summary>
/// <param name="sql"></param>
/// <param name="con"></param>
public void CreateTable(string sql,MySqlConnection con)
{
MySqlCommand com = new MySqlCommand(sql, con);
int res = com.ExecuteNonQuery();
}
/// <summary>
/// 插入數據
/// </summary>
/// <param name="sql"></param>
/// <param name="con"></param>
public void InsertInfo(string sql,MySqlConnection con)
{
MySqlCommand com = new MySqlCommand(sql, con);
int res = com.ExecuteNonQuery();
}
/// <summary>
/// 刪除數據
/// </summary>
/// <param name="sql"></param>
/// <param name="con"></param>
public void DeleteInfo(string sql,MySqlConnection con)
{
MySqlCommand com = new MySqlCommand(sql, con);
int res = com.ExecuteNonQuery();
}
/// <summary>
/// 修改數據
/// </summary>
/// <param name="sql"></param>
/// <param name="con"></param>
public void UpdateInfo(string sql,MySqlConnection con)
{
MySqlCommand com = new MySqlCommand(sql, con);
int res = com.ExecuteNonQuery();
}
/// <summary>
/// 查詢數據
/// </summary>
/// <param name="sql"></param>
/// <param name="con"></param>
public Dictionary<int,List<string>> QueryInfo(string sql,MySqlConnection con)
{
int indexDic = 0;
int indexList = 0;
Dictionary<int, List<string>> dic = new Dictionary<int, List<string>>();
MySqlCommand com = new MySqlCommand(sql, con);
MySqlDataReader reader = com.ExecuteReader();
while (true)
{
if (reader.Read())
{
List<string> list = new List<string>();
for (int i = 0; i < reader.FieldCount; i++)
{
list.Add(reader[indexList].ToString());
indexList++;
}
dic.Add(indexDic, list);
indexDic++;
indexList = 0;
}
else
{
break;
}
}
return dic;
}
/// <summary>
/// 關閉數據庫
/// </summary>
public void CloseMySQL()
{
(new MySqlConnection(sql)).Close();
Debug.Log("關閉數據庫");
}
#endregion
}
(2)數據庫功能實現
public class StudentSql : MonoBehaviour
{
/// <summary>
/// 工具類對象
/// </summary>
private SqlAccess sqlAce;
MySqlConnection con;
void Start()
{
//CreateStudentTable();
//InsertInfomation();
//QueryInfomation1();
//QueryInfomation2();
//UpdateInfomation();
//DeleteInfomation();
DeleteTable();
}
//一、創建一個「學生」表Student,它由學號Sid、姓名Sname、性別Ssex、年齡Sage、所在專業Sdept五個屬性組成,類型本身定義
/// <summary>
/// 建立學生表
/// </summary>
public void CreateStudentTable()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql = ("create table Student(Sid varchar(12),Sname varchar(8),Sage int,Sdept varchar(8))");
sqlAce.CreateTable(sql, con);
sqlAce.CloseMySQL();
}
//二、添加本身所在組的全部成員到表中。
/// <summary>
/// 學生表插值
/// </summary>
public void InsertInfomation()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql1 = ("insert into Student(Sid,Sname,Sage,Sdept) values('1001','學生A','20','土木工程')");
string sql2 = ("insert into Student(Sid,Sname,Sage,Sdept) values('1002','學生B','15','計算機與科學')");
string sql3 = ("insert into Student(Sid,Sname,Sage,Sdept) values('1003','學生C','16','電子商務')");
string sql4 = ("insert into Student(Sid,Sname,Sage,Sdept) values('1004','學生D','25','電子競技')");
string sql5 = ("insert into Student(Sid,Sname,Sage,Sdept) values('1005','學生E','23','網絡工程')");
string[] str = new string[5] { sql1, sql2, sql3, sql4, sql5 };
for (int i = 0; i < str.Length; i++)
{
sqlAce.InsertInfo(str[i], con);
}
sqlAce.CloseMySQL();
}
//三、查詢年齡在18至24歲之間的學生的姓名和專業
/// <summary>
/// 查詢學生信息01
/// </summary>
public void QueryInfomation1()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql = ("select Sname,Sdept from Student where Sage<'24' and Sage>'18' ");
Dictionary<int, List<string>> dic = sqlAce.QueryInfo(sql, con);
for (int i = 0; i < dic.Count; i++)
{
Debug.Log(string.Format("學生姓名:{0} 學生專業:{1}", dic[i][0], dic[i][1]));
}
sqlAce.CloseMySQL();
}
//四、查詢全部學生的學號與姓名
/// <summary>
/// 查詢學生信息02
/// </summary>
public void QueryInfomation2()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql = ("select Sid,Sname from Student");
Dictionary<int, List<string>> dic = sqlAce.QueryInfo(sql, con);
for (int i = 0; i < dic.Count; i++)
{
Debug.Log(string.Format("學生學號:{0} 學生姓名:{1}", dic[i][0], dic[i][1]));
}
sqlAce.CloseMySQL();
}
//五、將本身的年齡改成18歲
/// <summary>
/// 更新學生信息
/// </summary>
public void UpdateInfomation()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql = ("update Student set Sage='18' where Sname='學生A'");
sqlAce.UpdateInfo(sql, con);
sqlAce.CloseMySQL();
}
//六、刪除學號爲單數的學生記錄
/// <summary>
/// 刪除表信息
/// </summary>
public void DeleteInfomation()
{
sqlAce = new SqlAccess();
con = SqlAccess.con;
string sql2 = ("select Sid from Student");
Dictionary<int, List<string>> dic = sqlAce.QueryInfo(sql2, con);
sqlAce.CloseMySQL();
sqlAce = new SqlAccess();
con = SqlAccess.con;
for (int i = 0; i < dic.Count; i++)
{
if (Convert.ToInt32(dic[i][0]) % 2 == 1)
{
string sql1 = string.Format("delete from Student where Sid='{0}'", dic[i][0]);
sqlAce.DeleteInfo(sql1, con);
}
}
sqlAce.CloseMySQL();
}
/// <summary>
/// 刪除表
/// </summary> public void DeleteTable() { sqlAce = new SqlAccess(); con = SqlAccess.con; string sql = ("drop table Student"); sqlAce.DeleteInfo(sql, con); } }