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

第三阶段数据-4:SqlHelper类,数据库删除,DataTable创建

0820:数据库SqlHelper类

1_SqlHelper类

(1)SqlHelper是基于.NET Framework开发的数据库操作组件,主要通过封装ADO.NET对象(如SqlConnection、SqlCommand)简化数据库访问流程。该组件通过静态方法提供统一的数据访问模式,支持传入连接字符串和SQL参数快速执行数据库交互。

(2)SqlHelper类源码:有许多源码资源,可将源码复制到自己的项目中,创建工具类,直接调用类中的静态方法,,这边引用两个博主文章连接

微软原版(注释为英文):微软原版SQLHelper类 - 孤冢清风 - 博客园

中文注释版本:SqlHelper(带详细中文注释)-CSDN博客

(3)常用方法:

  • AssignParameterValues():主要负责给SQL参数赋值。

  • AttachParameters():主要把SQL参数和SqlCommand绑定在一起。核心代码:cmd.Parameters.Add()

  • CreateCommand():主要负责创建SqlCommand实例的。核心代码:SqlCommand cmd=new SqlCommand(sql,conn);

  • SqlHelperParameterCache:此类缓存SQL参数,目的是让创建和使用SQL参数时性能有所提升。

  • PrepareCommand():创建SqlCommand,并给SqlCommand准备参数。

  • ExecuteDataset():执行SQL语句或存储过程,返回一个DataSet。

  • XXXTypedParams():主要是使用强类型的参数来处理SQL语句或存储过程,目的防止SQL注入,提高安全性。

  • ExecuteReader():执行SQL语句或存储过程,返回数据集(多行多列)。

  • ExecuteNonQuery():执行SQL语句或存储过程,返回影响行数。

  • ExecuteScalar():执行SQL语句或存储过程,返回一行一列。

  • FillDataset():执行SQL语句或存储过程,填充数据集。

(4)SqlCommand返回三种数据:

  • cmd.ExecuteNonQuery():影响行数

  • cmd.ExecuteReader():结果集

  • cmd.ExecuteScalar():一行一列

(5)使用示例

//1.引入命名空间
using Microsoft.ApplicationBlocks.Data;
//2.查询,返回表
private void BindDataSource()
{SqlParameter[] sqlParamaters = new SqlParameter[]{new SqlParameter("@StuName",SqlDbType.VarChar)};sqlParamaters[0].Value = $"%{txtStuName.Text}%";//查询所有string sql = "select * from Students where Isdelect=0";if (!string.IsNullOrWhiteSpace(txtStuName.Text)){sql += "and StuName like @StuName";}DataSet ds= SqlHelper.ExecuteDataset(connString, CommandType.Text, sql, sqlParamaters);dataGridView1.DataSource = ds.Tables[0];
}
//删除,返回影响行数
private void btnRemove_Click(object sender, EventArgs e)
{if(dataGridView1.SelectedRows.Count !=1){MessageBox.Show("请先选择一行进行删除");return;}DialogResult re= MessageBox.Show("确定要删除吗?", "确认", MessageBoxButtons.YesNo);if (re != DialogResult.Yes) return;int delId =(int)dataGridView1.SelectedRows[0].Cells["Id"].Value;SqlParameter[] sqlParameters = new SqlParameter[]{new SqlParameter("@Id",SqlDbType.Int)};sqlParameters[0].Value = delId;string sql = "delete from Students where Id=@Id";int row = SqlHelper.ExecuteNonQuery(connString, CommandType.Text, sql, sqlParameters);if (row == 1){BindDataSource();}
}
//增加与更新与删除类似,返回的都是影响行数,不过sql语句与SqlPAarameters数组不同

2_数据库中的删除

(1)数据库的删除分为两种:

  • 物理删除: 把数据从数据库中真正删除 执行delete from 语句

  • 逻辑删除: 数据没有真正从数据中删除 而是更改数据状态 执行 update语句

物理删除逻辑如上述删除代码;逻辑删除代码逻辑如下

private void btnRemove2_Click(object sender, EventArgs e)
{if (dataGridView1.SelectedRows.Count != 1){MessageBox.Show("请先选择一行进行删除");return;}DialogResult re = MessageBox.Show("确定要删除吗?", "确认", MessageBoxButtons.YesNo);if (re != DialogResult.Yes) return;int delId = (int)dataGridView1.SelectedRows[0].Cells["Id"].Value;SqlParameter[] sqlParameters = new SqlParameter[]{new SqlParameter("@Id",SqlDbType.Int),new SqlParameter("@Isdelect",SqlDbType.Bit)};sqlParameters[0].Value = delId;sqlParameters[1].Value = 1;string sql = "update Students set Isdelect=@Isdelect where Id=@Id";int row = SqlHelper.ExecuteNonQuery(connString, CommandType.Text, sql, sqlParameters);if (row == 1){BindDataSource();}
}

3_DataTable创建

(1)代码示例

//创建表 参数为表名
DataTable dt = new DataTable("Student");
//创建列(表头)参数1为列名,参数2为该列数据类型
DataColumn column1 = new DataColumn("Id", typeof(int));
DataColumn column2 = new DataColumn("Name", typeof(string));
DataColumn column3 = new DataColumn("Age", typeof(int));
//将列添加到dt中
dt.Columns.Add(column1);
dt.Columns.Add(column2);
dt.Columns.Add(column3);
Random ra= new Random();
//创建行、
for (int i = 0; i < 10; i++)
{DataRow row = dt.NewRow();row["Id"] = i + 1;row["Name"] = "张三" + i + "号";row["Age"] = ra.Next(10,40);//将行添加到dt中dt.Rows.Add(row);
}
dataGridView1.DataSource= dt;

(2)结果展示

http://www.lryc.cn/news/627016.html

相关文章:

  • STM32F4 内存管理介绍及应用
  • 建模工具Sparx EA的多视图协作教程
  • PyTorch - Developer Notes
  • 吴恩达 Machine Learning(Class 3)
  • 国产化PDF处理控件Spire.PDF教程:如何使用 Python 添加水印到 PDF
  • Linux命令大全-ps命令
  • Linux系统之部署nullboard任务管理工具
  • 基于springboot中学信息技术课程教学网站
  • 栈上创建和堆上创建区别
  • Nginx 的完整配置文件结构、配置语法以及模块详解
  • 设计模式1-单例模式
  • 继续记事本项目
  • 盲盒商城h5源码搭建可二开幸运盲盒回收转增定制开发教程
  • Hyperledger Fabric官方中文教程-改进笔记(十三)-使用测试网络创建通道
  • Google Chrome 扩展不受信任 - 不受支持的清单版本 解决方案
  • 整体设计 之定稿 “凝聚式中心点”原型 --整除:智能合约和DBMS的在表层挂接 能/所 依据的深层套接
  • AR 虚实叠加技术在工业设备运维中的实现流程方案
  • 云原生环境下的ITSM新趋势:从传统运维到智能化服务管理
  • MySQL 50 道经典练习题及答案
  • YOLOv8n-pose 模型使用
  • 学习中需不需要划线、做笔记
  • LLM常见名词记录
  • 【0基础PS】图片格式
  • 奇怪的“bug”--数据库的“隐式转换”行为
  • 深入解析:生产环境 SQL 数据库的架构设计与工程实践
  • 【clion】visual studio的sln转cmakelist并使用clion构建32位
  • 深入理解MySQL Ⅳ -- SQL性能分析工具
  • 欧州服务器String 转 double 有BUG?
  • skyworking 8.9.X 安装配置
  • 云原生俱乐部-RH294知识点归纳(1)