在项目开发中,有时候我们需要去跟数据库进行一些交互,所以这里就出现了一个类 SqlManager,将它拓展到我们的框架中的话就是。
sql 的一些基本操作就是首先安装 Navicat 客户端,因为博主这边使用到的是 Mysql 数据库,这个数据的强大性就不过多 的强调了,这边的 SqlManager就是连接数据库然后就是获取数据库以及查找其中的内容, 就是上代码了
//==========================
// - FileName: MySqlHelp.cs
// - Created: true.
// - CreateTime: 2020/04/26 15:27:04
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: 数据库工具类 、 MysqlHelp 封装在 GameManager 中,由于作者比较喜欢用大单例
//==========================
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
public class SqlManager
{
private MySqlConnection mySqlConnection;
private string _host;
private string _id;
private string _pwd;
private string _dataBase;
public SqlManager()
{
string configPath = Application.dataPath + "/Config/SqlUserPassWord.txt";
string configStr = File.ReadAllText(configPath);
string[] sqlStr = configStr.Split(new char[] { '|' });
InitMySql(sqlStr[0], sqlStr[1], sqlStr[2], sqlStr[3]);
}
private void InitMySql(string host, string id, string pwd, string dataBase)
{
_host = host;
_id = id;
_pwd = pwd;
_dataBase = dataBase;
OpenSqlConnection();
}
/// <summary>
/// 打开数据库连接
/// </summary>
public void OpenSqlConnection()
{
string str = "";
try
{
str = string.Format("Database={0};DataSource={1};User Id={2};Password={3};character set = utf8", _dataBase, _host, _id, _pwd, "3306");
mySqlConnection = new MySqlConnection(str);
mySqlConnection.Open();
//Debug.Log("Mysql Connection Access");
Debug.Log("数据库连接成功");
}
catch (Exception e)
{
Debug.LogError(e.Message);
//Debug.LogError("MySqlAccess", "OpenSql() 服务器连接失败。 connect str={0};Error:{1}", str, e.Message);
}
}
public DataSet Query(string format, params object[] args)
{
string query = string.Format(format, args);
//Debuger.Log("MySqlAccess", "Query() query={0}", query);
//Debug.Log(e.Message);
return ExecuteQuery(query);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="tableName">虚拟表名称</param>
/// <returns></returns>
private DataSet ExecuteQuery(string sql)
{
//Debug.Log(sql+"____");
if (mySqlConnection.State == ConnectionState.Open)
{
DataSet ds = new DataSet();
try
{
MySqlCommand mySqlCommand = new MySqlCommand(sql, mySqlConnection);
MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(mySqlCommand);
mySqlDataAdapter.Fill(ds);
}
catch (Exception e)
{
Debug.LogError(e.Message);
//Debuger.LogError("MySqlHelper", "ExecuteQuery() sql={0} Error:{1}", sql, e.Message);
}
return ds;
}
return null;
}
public int ExcuteReader(string sqlTxt)
{
if (mySqlConnection.State == ConnectionState.Open)
{
try
{
Debug.Log(sqlTxt);
MySqlCommand cmd = new MySqlCommand(sqlTxt, mySqlConnection);
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Debug.LogError(ex.Message);
return 0;
}
}
return 0;
}
/// <summary>
/// 释放连接
/// </summary>
public void Close()
{
if (mySqlConnection != null)
{
mySqlConnection.Close();
mySqlConnection.Dispose();
mySqlConnection = null;
}
}
}