C#如何操作数据库

C#如何操作数据库

前言

本文主要交代如何通过引用

csharp 复制代码
using MySql.Data.MySqlClient;

来操作数据库

需要导入.dll文件

例如:在本地Mysql下载目录下->Connecter NET 8.0->Assemblies->net5.0->MySql.Data.dll

请根据实际情况,灵活选择.dll文件的版本

1、查询操作

csharp 复制代码
	//连接数据库字符串
    string conStr = "server=localhost;port=3306;user=root;password=123456;database=liardice";
    //建立mysql连接(连接池)
    MysqlConnection con = new MySqlConnection(conStr);
    //打开连接
    con.Open();
	//编写sql语句
	//此处直接拼接给入的account值,在后文(2、)中还会展示如何给sql语句添加参数
    string sql = "select id,account,password from userdata where account=" + account + ";";
    //Mysql命令对象
    MysqlCommand cmd = new MySqlCommand(sql, con);
    //执行,得到mysql的数据读取流
    MysqlDataReader reader = cmd.ExecuteReader();
    //这里展示的是查询一条消息,如果查出来很多条消息可以把if换成while循环
    if (reader.Read())//说明有这个信息
    {
    	//将查出来的信息封装到对象中
        UserData ud = new UserData();
        ud.setId((int)(reader[0]));
        ud.setAccount(reader[1].ToString());
        ud.setPassword(reader[2].ToString());
    }
    else//说明没有这个信息 暂不做处理
    {
        reader.Close();
    }
	//关闭资源,可以使用try-catch-finally等来完成
	if (reader != null)
	{
	    reader.Close();
	}
	if (cmd != null)
	{
	    cmd.Dispose();
	}
	if (con != null)
	{
	    con.Close();
}

2、增删改操作

增删改操作是类似的,此处用增加操作举例

csharp 复制代码
	//连接字符串
    string conStr = "server=localhost;port=3306;user=root;password=123456;database=liardice";
    //连接对象
    MysqlConnection con = new MySqlConnection(conStr);
	//打开连接
    con.Open();
    //编写sql语句
    string sql = "insert into userdata (account,password) values(@account,@password);";
    MysqlCommand cmd = new MySqlCommand(sql, con);
   //使用bcrypt加密
    string encryptedPassword = BCryptNet.HashPassword(password);
	//给sql语句添加参数,避免sql注入攻击
    cmd.Parameters.AddWithValue("@account", account);
    cmd.Parameters.AddWithValue("@password", encryptedPassword);
	//执行sql语句
    cmd.ExecuteNonQuery();

3、需要返回id主键的sql语句执行

只需在最后执行时,调用cmd.ExecuteScalar()方法即可

csharp 复制代码
int id = (int)cmd.ExecuteScalar();
相关推荐
椒颜皮皮虾྅8 小时前
OpenVINO C# API 3.3.1:支持OpenVINO 2026.3及GenAI增强
人工智能·c#·openvino
半亩码田11 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
唐青枫18 小时前
别再手写 args[0]:C#.NET CommandLineParser 命令行工具实战详解
c#·.net
LccKyI19 小时前
C#学习day06(方法/函数及其关键字,附思维导图)
经验分享·学习·c#
.Peter19 小时前
.NET/WPF 程序在部分 Windows 电脑无法保存用户环境变量:使用 DPAPI 实现安全兼容
windows·信息安全·c#·.net·wpf·环境变量·dpapi
农村小镇哥20 小时前
怎么把HTM格式转化成WORD
ui·c#·word
农村小镇哥20 小时前
C#读取CSV文件的方法
服务器·数据库·c#
FuckPatience21 小时前
C# 报错参数无效
c#
北域码匠1 天前
PID 控制算法完整详解(C# 原生实现,无第三方库)
c#·pid控制·工控开发·闭环控制·自动控制算法·数字pid·增量式pid
离陌在学C#1 天前
C# 重载与重写:深入理解面向对象编程的核心概念
java·c#