今天抽空做个笔记,也对之前的东西进行一下回顾,记录一下Unity连接数据库。
在开始之前,先添加需要引用的DLL:
如果没有,可自行在网上下载。
进入正文。
首先,为了连接方便连接信息使用XML配置文件:
<DBConfig>
<ip>127.0.0.1</ip>
<port>3306</port>
<DBName>DBName</DBName>
<id>root</id>
<passWord></passWord>
</DBConfig>
接下来是在Unity读取配置文件:
private string host = "";
private string id = "";
private string pwd = "";
private string database = "";
private string port = "";
private string xmlLocalpath = Application.dataPath + @"/DBConfig.xml";
private void ReadLocalXml()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlLocalpath);
XmlNode xmlroot = xmlDoc.SelectSingleNode("DBConfig");
XmlNodeList nodelist = xmlroot.ChildNodes;
host = nodelist[0].InnerText;
port = nodelist[1].InnerText;
database = nodelist[2].InnerText;
id = nodelist[3].InnerText;
pwd = nodelist[4].InnerText;
}
接下来使用读取到的配置文件信息链接数据库以及断开链接:
public static MySqlConnection dbConnection;
/// <summary>
/// 打开数据库
/// </summary>
/// <param name="connectionString"></param>
public void OpenDB()
{
try
{
string connectionString = string.Format("Server = {0};port={4};Database = {1}; User ID = {2}; Password = {3}; Charset = {5}", host, database, id, pwd, port,"utf8");
dbConnection = new MySqlConnection(connectionString);
dbConnection.Open();
}
catch (Exception e)
{
Debug.LogError("服务器连接失败,请重新检查是否打开MySql服务:" + e.Message.ToString());
}
}
/// <summary>
/// 关闭数据库连接
/// </summary>
public void CloseDB()
{
if (dbConnection != null)
{
dbConnection.Close();
dbConnection.Dispose();
dbConnection = null;
}
Debug.Log("断开数据库连接......");
}
接下来是语句执行方法:
/// <summary>
/// 执行查询语句
/// </summary>
/// <param name="sqlQuery"></param>
/// <returns></returns>
public static DataSet ExecuteQuery(string sqlString)
{
if (dbConnection == null)
{
return null;
}
if (dbConnection.State == ConnectionState.Open)
{
DataSet ds = new DataSet();
try
{
MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);
da.Fill(ds);
}
catch (Exception ee)
{
Debug.LogError("SQL:" + sqlString + "/n" + ee.Message.ToString());
}
return ds;
}
return null;
}
到这里,数据库连接,关闭,语句执行都已完成。
最后再介绍一下使用,以获取数据为例:
/// <summary>
/// 获取name表ID属性
/// </summary>
public void GetNameTableID()
{
int id = 0;
DataSet em = ConnectSqlDB.ExecuteQuery("Select * from name"); //name为表名
if (em != null)
{
DataTable table = em.Tables[0];
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
if (column.ColumnName == "id")
{
id = Convert.ToInt32(row["id"]);
}
}
}
}
Debug.LogError(“id = ”+id );
}
业务代码就不做过多的介绍,如有兴趣,可学习MySql。