数据库的封装
来源:互联网 发布: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;
阅读全文
0 0
- 数据库操作的封装
- 数据库的封装
- 数据库API的封装
- 连接数据库的封装
- 对数据库的封装
- 数据库类 的 封装
- 数据库类的封装
- 数据库的简单封装
- 数据库的封装包
- 数据库操作的封装
- SQlite数据库的封装
- 数据库的简单封装
- 数据库的封装
- SQLite数据库的封装
- IM项目-数据库的封装
- ACCSEE数据库简单的封装
- 连接数据库的封装类
- 封装的数据库访问类
- typedef和define,const,struct和typedef struct
- 同时含有中英文字符串的长度
- A
- Oracle常用查询语句
- Android 自定义控件系列文章
- 数据库的封装
- html和CSS基础学习(十)
- PyQt5:使用QT设计师设计界面
- 数据结构实验之链表九:双向链表
- entrySet/keySet/entry
- HDOJ1098
- 2017组队训练赛11
- Xcode9:最新功能详细介绍
- zookeeper路径信息变化(节点信息变化)监听实现