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();
相关推荐
唐青枫7 小时前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
c#·.net
ghie909017 小时前
C# WinForms 条形码生成器(含保存和打印预览功能)
开发语言·c#
蒙塔基的钢蛋儿17 小时前
告别内存泄露与空指针:用C#与.NET 10开启STM32H7高性能单片机开发新纪元
stm32·c#·.net
ZoeJoy817 小时前
C# Windows Forms 学生成绩管理器(StudentGradeManager)—— 方法重载、out、ref、params 参数示例
开发语言·c#
solicitous18 小时前
历史与术语
学习·c#
第二只羽毛18 小时前
第三章 栈,队列和数组
大数据·数据结构·c#
biuba102418 小时前
18 openclaw事务管理:确保数据一致性的最佳实践
开发语言·ai·c#·编程·技术
fengfuyao98518 小时前
C# 高仿QQ截图工具(支持自定义快捷键)
开发语言·c#
时光追逐者18 小时前
一款基于 .NET 开源、跨平台应用程序自动升级组件
c#·.net·.net core
啸啸说19 小时前
1.图像的加载与保存
opencv·c#