Unity服务器开发01:C#连接MySQL数据库

Unity服务器开发01:C#连接MySQL数据库

前言:
在复习了数据库知识后,今天起正式开始学习unity的客户端与服务端,目标是做出一个联网的游戏demo!工欲善其事必先利其器,在开发之前第一件事就是搭建开发环境,做好设计。第一步是先准备好数据库。

(一)联网游戏的原理图
在这里插入图片描述(二)安装MySQL数据库
数据库是服务端的基础,我选择了MySQL,轻量而且性能好。
MySQL版本:5.7.17.0
MySQL下载:官网下载链接

(三)在MySQL中创建数据库并设计存储数据的表
在这里插入图片描述
在这里插入图片描述

PS:MySQL操作帮助文档位置:C:\Program Files (x86)\MySQL\Connector.NET 6.9\Documentation

(四)
在VS中创建一个控制台应用程序,注意框架选择.net4.5,在右侧引用栏添加MySQL引用。
引用MySQL路径:C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5
在这里插入图片描述

(五)使用C#连接MySQL数据库并进行交互测试
这里给出测试连接和操作的代码,将每种操作都封装在方法里,搬运代码时只需要取消掉想测试的方法的注释就可以了,运行结果就是控制台的界面(就不截图展示了),然后能在MySQL中看见自己数据库的变化(刷新一遍)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;//引入mysql

namespace CSharp直接连接MySQL
{
    class Program
    {
        static void Main(string[] args)
        {
            //将操作都封装在方法里了,测试的时候取消下方注释直接调用方法就行,不要同时调用多个方法,可能会有冲突

            // Read();//读取查询
            //Insert();//插入数据
            //Update();//更新数据
            //Delete();//删除数据
            // ReadUsersCount();//查询一些值
            //ExecuteScalar();//执行一些查询,返回一个单个的值

            Console.ReadKey();
        }

      static void Read()//封装测试-数据库查询操作
        {
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
           MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "select * from users";//数据库操作命令,查询users表
                //string sql = "select id,username,registerdate from users";//数据库操作命令,查询users表指定列
                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                //cmd.ExecuteReader();//执行一些查询
                //cmd.ExecuteNonQuery();//插入,删除
                //cmd.ExecuteScalar();//执行一些查询,返回一个单个的值
               
                MySqlDataReader reader = cmd.ExecuteReader();
                //reader.Read();//每次调用Read,读取一条记录,打开第一行。把reader当作一本书
                //Console.WriteLine(reader[0].ToString()+reader[1].ToString()+ reader[2].ToString());//打印当前行的三列数据
                //reader.Read();//第二次调用,打开第二行的数据
                //Console.WriteLine(reader[0].ToString() + reader[1].ToString() + reader[2].ToString());//打印当前行的三列数据
                while(reader.Read())//Read每次调用会返回Ture或False的值,使用while循环来全部遍历
                {
                    Console.WriteLine("执行了一次用户名与密码的查询");
                    Console.WriteLine(reader[0].ToString() + reader[1].ToString() + reader[2].ToString());//打印当前行的三列数据

                    //其他方式:
                    // Console.WriteLine(reader.GetInt32(0) + " " + reader.GetString(1) + " " + reader.GetString(2));
                   // Console.WriteLine(reader.GetInt32("id") + " " + reader.GetString("username") + " " + reader.GetString("password"));
                }

            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }

        static void Insert()//封装测试-数据库插入操作
        {
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
           MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "insert into users(username,password) values('游客','123')";//数据库操作命令,插入数据
                //string sql = "insert into users(username,password,registerdate) values('游客2','123','2021-1-3')";//数据库操作命令,插入数据
                //string sql = "insert into users(username,password,registerdate) values('游客3','123','"+DateTime.Now+"')";//数据库操作命令,插入数据

                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                int result = cmd.ExecuteNonQuery();//返回值是数据库受影响行数的记录
            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }
        static void Update()//封装测试-数据库更新数据
        {
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
            MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "update users set username ='更新后的用户名',password='123' where id =3";//数据库操作命令,更新数据
                //string sql = "insert into users(username,password,registerdate) values('游客2','123','2021-1-3')";//数据库操作命令,插入数据
                //string sql = "insert into users(username,password,registerdate) values('游客3','123','"+DateTime.Now+"')";//数据库操作命令,插入数据

                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                int result = cmd.ExecuteNonQuery();//返回值是数据库受影响行数的记录

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }
        static void Delete()//封装测试-删除数据
        {
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
            MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "delete from users where id=7 ";//数据库删除数据
                //string sql = "insert into users(username,password,registerdate) values('游客2','123','2021-1-3')";//数据库操作命令,插入数据
                //string sql = "insert into users(username,password,registerdate) values('游客3','123','"+DateTime.Now+"')";//数据库操作命令,插入数据

                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                int result = cmd.ExecuteNonQuery();//返回值是数据库受影响行数的记录

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }
        static void ReadUsersCount()//封装测试-查询一些值
        {
             string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
           MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "select count(*) from users";//数据库操作命令,读取数据行数
               
                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                MySqlDataReader reader = cmd.ExecuteReader();
                reader.Read();
                int count = Convert.ToInt32(reader[0].ToString());
                Console.WriteLine(count);
                
            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }
        static void ExecuteScalar()//封装测试-执行一些查询,返回一个单个的值
        {
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root;";//sql连接数据参数
            MySqlConnection conn = new MySqlConnection(connectStr);//还未与数据库建立连接
            try//捕捉异常,并打印
            {
                conn.Open();//建立连接
                Console.WriteLine("已经与数据库建立连接");

                string sql = "select count(*) from users";//数据库操作命令,读取数据行数

                MySqlCommand cmd = new MySqlCommand(sql, conn);//数据库命令类
                
               
                object o = cmd.ExecuteScalar();
                int count = Convert.ToInt32(o.ToString());
                Console.WriteLine(count);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally//无论如何都会去执行的语句
            {
                conn.Close();//关闭连接
            }
        }

    }
}

  • 2
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页

打赏

Windbell_233

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者