数据库的封装

来源:互联网 发布:linux编译命令 编辑:程序博客网 时间:2024/06/05 14:11

对于上一篇博文中数据库的使用我们发现了很多冗余的代码,非常不利于我们在多个文件中使用数据库,因此我对此类进行了一次封装
参考代码如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;//引入操纵MySQL数据库命名空间using MySql.Data.MySqlClient;using System.Data;public class LearnMySql : MonoBehaviour {    //用来接收数据的集合    private List<Student> _list;    //    MySqlDBHelper _mySqlDBHelper;    void Start () {        _list = new List<Student>();        _mySqlDBHelper = new MySqlDBHelper("Student", "127.0.0.1", 3306, "root", "123456");    }    void Update ()    {        //增        if (Input.GetKeyDown(KeyCode.A))        {            _mySqlDBHelper.ExecuteNonQueryCommand("insert into studentInfo (name,age) values (\"小花\",20)");            Debug.Log("添加成功");        }        //删        if (Input.GetKeyDown(KeyCode.B))        {            _mySqlDBHelper.ExecuteNonQueryCommand("delete from studentInfo where name='小花'");            Debug.Log("删除成功");        }        //改        if (Input.GetKeyDown(KeyCode.C ))        {            _mySqlDBHelper.ExecuteNonQueryCommand("update studentInfo set age = 25 where name='小花'");            Debug.Log("修改成功");        }        //查        if (Input.GetKeyDown(KeyCode.D ))        {            DataTable dt = _mySqlDBHelper.ExecuteQueryCommand("select * from studentInfo where name = '小花'");            if (dt.Rows != null)            {                foreach (DataRow row in dt.Rows)                {                    Student stu = new Student();                    stu.Id = (int)row["id"];                    stu.Name = (string)row["name"];                    stu.Age = (uint)row["age"];                    Debug.Log(stu);                    _list.Add(stu);                }            }            else            {                Debug.Log("没有查询到此项");            }        }    }}public class MySqlDBHelper{    MySqlConnection _myCon;    //Sql命令    MySqlCommand _mycom;    //数据库名字    private string databaseName;    //连接数据库用到的Ip    private string ip;    //数据库的端口号    private int port;    //登录数据库的用户名    private string username;    //登录数据库的密码    private string password;    #region    public string DatabaseName    {        get        {            return databaseName;        }        set        {            databaseName = value;        }    }    public string Ip    {        get        {            return ip;        }        set        {            ip = value;        }    }    public int Port    {        get        {            return port;        }        set        {            port = value;        }    }    public string Username    {        get        {            return username;        }        set        {            username = value;        }    }    public string Password    {        get        {            return password;        }        set        {            password = value;        }    }    #endregion    public MySqlDBHelper(string databaseName,string ip, int port,string username,string password)    {        DatabaseName = databaseName;        Ip = ip;        Port = port;        Username = username;        Password = password;        string constr = string.Format("Database={0};Data Source={1};User Id={2};Password={3}", DatabaseName, Ip, Username, Password, Port);        try        {            _myCon = new MySqlConnection(constr);            _myCon.Open();            Debug.Log("连接成功");        }        catch (MySqlException e)        {        }    }    /// <summary>    /// /执行没有查询的命令    /// 使用于增删改    /// </summary>    /// <param name="cmdText"></param>    /// <returns></returns>    public int ExecuteNonQueryCommand(string cmdText)    {        try        {            _mycom = new MySqlCommand(cmdText, _myCon);            int ret = _mycom.ExecuteNonQuery();            //执行成功后 置为空            _mycom = null;            return ret;        }        catch (MySqlException e)        {        }        //表示有异常        return -1;    }    public DataTable ExecuteQueryCommand(string cmdText)    {        try        {            _mycom = new MySqlCommand(cmdText, _myCon);            MySqlDataAdapter mda = new MySqlDataAdapter(cmdText, _myCon);            //构造数据集             DataSet ds = new DataSet();            //把数据填充到数据集中            //返回值count是数据集中数据的条数            int count = mda.Fill(ds);            DataTable dt = ds.Tables[0];            _mycom = null;            return dt;        }        catch (MySqlException e)        {        }        //表示有异常        return null;    }    //析构函数    ~MySqlDBHelper()    {        //如果当前连接存在并为打开连接,则将当前连接关闭        if (_myCon != null && _myCon.State == System.Data.ConnectionState.Open)        {            _myCon.Close();        }    }}//定义一个数据容器//在定义数据容器的时候需要注意字段的类型一定要和数据库中的字段类型匹配//将会抛出异常  InvalidCastException: Cannot cast from source type to destination type.class Student{    private int id;    private string name;    private uint age;    public int Id    {        get        {            return id;        }        set        {            id = value;        }    }    public string Name    {        get        {            return name;        }        set        {            name = value;        }    }    public uint Age    {        get        {            return age;        }        set        {            age = value;        }    }    public override string ToString()    {        return string.Format("id:{0},name:{1},age:{2}",Id,Name,Age);    }}

数据库中的字段的定义如下:
这里写图片描述
所以我在定义数据容器的时候字段是和数据库中匹配的:

private int id;private string name;private uint age;
原创粉丝点击