当前位置: 首页 > article >正文

C#如何操作数据库

C#如何操作数据库

  • 前言
  • 1、查询操作
  • 2、增删改操作
  • 3、需要返回id主键的sql语句执行

前言

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

using MySql.Data.MySqlClient;

来操作数据库
需要导入.dll文件
例如:在本地Mysql下载目录下->Connecter NET 8.0->Assemblies->net5.0->MySql.Data.dll
请根据实际情况,灵活选择.dll文件的版本

1、查询操作

	//连接数据库字符串
    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、增删改操作

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

	//连接字符串
    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()方法即可

int id = (int)cmd.ExecuteScalar();

http://www.kler.cn/a/463348.html

相关文章:

  • CG顶会论文阅读|《科技论文写作》硕士课程报告
  • Vue3 内置组件之component
  • 非docker方式部署openwebui过程记录
  • [Qt] Qt介绍 | 搭建SDK
  • Golang的容器编排实践
  • Eplan 布局图中的宏/设备/安装板比例缩放
  • HTML——48. div标签
  • ubuntu初始配置
  • 基于神经网络的车牌识别算法matlab仿真 人工智能方法 车牌识别
  • MySQL初始安装登录:ERROR 2003 (HY000): Can‘t connect to MySQL server on
  • OpenCV中VideoCapture的各种用法
  • 慎用翼讯科技服务器以及不知名服务器的说明
  • 手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电
  • Vue2: 创建一个可多选的Table,并回显数据选中状态
  • 华为配置 之 链路聚合
  • -qemu
  • PCIe通信---RIFFA
  • 鸿蒙 NEXT 开发中,使用公共事件进行进程间通信
  • 《机器学习》线性回归模型实现
  • torch.nn.LSTM介绍
  • 基于微信小程序的校园自助打印系统
  • 基于单片机的多功能遥控加湿器的设计
  • 最大化堡垒补给数量的策略与实现
  • 【计算机视觉】超简单!维纳滤波的经典案例
  • SpringCloud源码分析-Ribbon与LoadBalancer
  • jmeter分布式启动