通过MySql.Data连接MySql数据库(C#)


通过MySqlConnection类与MySql建立连接

  1. 建立连接
    MySqlConnection conn = new MySqlConnection(“server=服务器名称;port=端口号;database=数据库名称;user=用户名;password=密码”);
  2. 开启连接
    conn.Open();
  3. 关闭连接
    conn.Close();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace CSharp直接连接MySQL
{
    class Program
    {
        static void Main(string[] args)
        {
            //进行连接的信息参数:server服务器地址,port端口号,database数据库名,user用户名,password密码
            string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=123";
            //与数据库建立连接
            MySqlConnection conn = new MySqlConnection(connectStr);
            try
            {
                //开启连接
                conn.Open();
            }
            catch (Exception e)
            {
                Console.Write(e.ToString());
            }
            finally
            {
                //关闭连接
                conn.Close();
            }

            Console.Write("已经建立连接" + conn);
            Console.ReadKey();
        }
    }
}

使用MySqlCommand对数据库进行增删改查

》MySqlCommand cmd = new MySqlCommand(sql, conn);
sql:要执行的sql语句
conn:和数据库建立好的连接
1.MySqlDataReader reader = cmd.ExecuteReader(); //执行一些查询语句
2.cmd.ExecuteNonQuery(); //执行插入 删除等没有结果返回的操作
3.cmd.ExecuteScalar(); //执行查询,返回单个值,查询单个值时优先使用


执行查询命令cmd.ExecuteReader();

》利用已经建立连接的conn进行数据库查询操作:
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
注意:查询多条语句用cmd.ExecuteReader();
查询一条语句用cmd.ExecuteScalar();

String sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
//MySqlDataReader reader = cmd.ExecuteReader();   //执行一些查询语句
//cmd.ExecuteNonQuery();     //执行插入 删除
//cmd.ExecuteScalar();      //执行查询,返回单个值
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
    Console.WriteLine(reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString());
}

执行修改和删除命令cmd.ExecuteNonQuery();

int result = cmd.ExecuteNonQuery();
修改或删除成功数据库中的数据,返回1;否则返回0.

//修改
string sql = "update users set username = 'cch',password = 'oop' where id = 4";
MySqlCommand cmd = new MySqlCommand(sql, conn);
int result = cmd.ExecuteNonQuery();
Console.WriteLine(result);      //0或1
//删除
string sql = "delete from users where id = 6";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();

查询单个值cmd.ExecuteReader();

》ExecuteScalar这个方法是从数据库中检索单个值返回值是object类型, 必须用与它在数据库里存放的类型相同类型或者可以转换成的类型,
》 比如数据是nchar类型值为 “123” 就可以用(int)ExecuteScalar(), 如果数据是nchar类型值为 “abc”就不能用(int)ExecuteScalar(), 就得写string result = ExecuteScalar().ToString();

string sql = "select count(*) from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
object res = cmd.ExecuteScalar();
Console.WriteLine(res);

查询是其他取得数据的方式

reader.GetString(“username”)
reader.get类型(“字段名或者字段编号”);

string sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader =  cmd.ExecuteReader();
while (reader.Read())
{
    //Console.WriteLine("id=" + reader.GetInt32(0) + ",username ="+reader.GetString(1)+",password=" + reader.GetString(2));
    Console.WriteLine("id=" + reader.GetInt32("id") + ",username =" + reader.GetString("username") + ",password=" + reader.GetString("password"));

给查询语句动态添加参数

string sql = “select count(*) from users where username = @username and password = @password”;
cmd.Parameters.AddWithValue(parameterName, value);
对要进行动态添加的参数变量前加一个‘@’符号,在sql语句执行前,使用cmd.Parameters.AddWithValue(parameterName, value);动态添加
》parameterName:动态添加的变量名
》value:动态添加的值

static bool Login(string username,string password){
        string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=123";
        //与数据库建立连接
        MySqlConnection conn = null;
        object res = null;
        string sql = "select count(*) from users where username = @username and password = @password";
        try
        {
            conn = new MySqlConnection(connectStr);
            conn.Open();
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            cmd.Parameters.Add("username", username);
            cmd.Parameters.Add("password", password);
            res = cmd.ExecuteScalar();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        finally
        {
            conn.Close();
        }
        if (Convert.ToInt32(res) != 0)
        {
            return true;      //登录成功返回true
        }
        else
        {
            return false;         //登录失败,返回false
        }
    }
}

SQL中的一些函数

  1. AVG 函数
    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
    SQL AVG() 语法
    SELECT AVG(column_name) FROM table_name
  2. COUNT() 函数
    COUNT() 函数返回匹配指定条件的行数。
    SQL COUNT() 语法
    COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
    SELECT COUNT(column_name) FROM table_name
  3. SUM() 函数
    SUM 函数返回数值列的总数(总额)。
    SQL SUM() 语法
    SELECT SUM(column_name) FROM table_name

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cchoop

有用的话请杯肥宅水

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值