DB类的学习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data; //引用三个命名空间
using System.Data.SqlClient;
using System.Configuration;/// <summary>
/// DB 的摘要说明
/// </summary>
public class DB
{public DB(){//// TODO: 在此处添加构造函数逻辑//}/// <summary>/// 用于执行返回单个值的select语句/// </summary>/// <param name="sql">只返回单个值的select语句</param>/// <returns>查到的一个值,查询失败返回null</returns>// 定义一个公开的方法,该方法接受一个SQL查询字符串作为参数,并返回一个object类型的值。  
public object queryOneValue(string sql)  
{  // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。  string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;  // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。  SqlConnection conn = new SqlConnection(connStr);  try  {  // 打开数据库连接。  conn.Open();  // 使用提供的SQL查询字符串和已建立的数据库连接构造一个SqlCommand对象。  SqlCommand comm = new SqlCommand(sql, conn);  // 执行SqlCommand对象中的SQL命令,并返回查询结果中的第一行第一列的值(如果有的话)。  // 这通常用于返回单个值,如COUNT(*)的结果或SELECT TOP 1 ...的结果。  object ret = comm.ExecuteScalar();  // 返回查询到的值(如果有的话)。  return ret;  }  catch (Exception ex)  {  // 如果在执行过程中发生任何异常,捕获该异常并返回null。  // 这里应该记录异常信息以便后续调查,但此示例中未显示。  return null;  }  finally  {  // 无论是否发生异常,都会执行finally块中的代码。  // 检查数据库连接是否仍然打开。  if (conn.State == ConnectionState.Open)  {  // 如果连接是打开的,则关闭它。  conn.Close();  }  }  
}// 定义一个公开的方法,该方法接受一个SQL命令字符串作为参数,并返回一个int类型的值。  
// 通常,这个返回值表示受影响的行数。  
public int ExecuteNonQueryCommand(string sql)  
{  // 从Web.config文件中获取名为"myDBConnectionString"的数据库连接字符串。  string connStr = ConfigurationManager.ConnectionStrings["myDBConnectionString"].ConnectionString;  // 使用上面获取的连接字符串构造一个SqlConnection对象,用于与数据库建立连接。  SqlConnection conn = new SqlConnection(connStr);  try  {  // 打开数据库连接。  conn.Open();  // 使用提供的SQL命令字符串和已建立的数据库连接构造一个SqlCommand对象。  SqlCommand comm = new SqlCommand(sql, conn);  // 执行SqlCommand对象中的SQL命令,并返回受影响的行数。  // 这通常用于执行INSERT、UPDATE、DELETE等不返回结果集的命令。  int ret = comm.ExecuteNonQuery();  // 返回受影响的行数。  return ret;  }  catch (Exception ex)  {  // 如果在执行过程中发生任何异常,捕获该异常并返回一个特殊的值(-1)表示操作失败。  // 这里应该记录异常信息以便后续调查,但此示例中未显示。  return -1;  }  finally  {  // 无论是否发生异常,都会执行finally块中的代码。  // 检查数据库连接是否仍然打开。  if (conn.State == ConnectionState.Open)  {  // 如果连接是打开的,则关闭它。  conn.Close();  }  }  
}

  1. 使用 ExecuteScalar 时,你应确保SQL查询返回单个值(或没有值,这将返回null)。如果查询返回多行多列的数据,则 ExecuteScalar 将只返回第一行第一列的值,并忽略其他行和列。
  2. 在使用数据库连接时,使用 try-catch-finally 结构可以确保即使在发生异常的情况下,连接也能被正确关闭。这是一个很好的编程实践。

"不返回结果集" 指的是执行 SQL 语句后,数据库不会返回一个可以逐行读取的数据集(如查询结果)。对于 SQL 语句,我们可以大致分为两类:返回结果集的语句和不返回结果集的语句。

返回结果集的语句

这类语句通常用于从数据库中检索数据,例如 SELECT 语句。当你执行一个 SELECT 语句时,数据库会返回一个结果集,你可以遍历这个结果集来读取查询到的数据。

不返回结果集的语句

这类语句通常用于修改数据库中的数据或结构,而不是检索数据。以下是一些不返回结果集的 SQL 语句的例子:

  1. 数据修改语句
    • INSERT:向表中插入新行。
    • UPDATE:更新表中的现有行。
    • DELETE:从表中删除行。
  2. 数据定义语句
    • CREATE:创建新的数据库、表、索引等。
    • ALTER:修改现有的数据库、表、索引等。
    • DROP:删除数据库、表、索引等。
  3. 其他
    • SET:在事务中设置变量或更改数据库会话的某些设置。
    • TRUNCATE:删除表中的所有行,但不记录单独的行删除操作。

当执行这些不返回结果集的语句时,SqlCommand.ExecuteNonQuery() 方法被用于执行命令。它返回一个整数,表示受影响的行数(对于 INSERTUPDATE 和 DELETE 语句)或表示命令是否成功执行(对于 CREATEALTER 和 DROP 语句,尽管不是所有数据库系统都会为这些命令返回受影响的行数)。

总结

"不返回结果集" 意味着执行 SQL 语句后,你不会得到一个可以逐行读取的数据集。相反,你可能会得到一个表示受影响的行数的整数,或者只是一个表示命令是否成功执行的确认。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+ts+vite+pinia+less+echarts 前端可视化 实战项目

1.初始化前端 输入 npm init vuelatest 命令 然后 选择需要的插件2.构建完成后 在终端切换到vue-project文件夹下 npm install 下载依赖 3.下载 less样式 npm install less less-loader -D 4.下载axios npm install axios 5.下载echarts npm install echarts -S 6.引入中国…

JAVA 的数据类型

Java 是一种静态类型语言&#xff0c;这意味着在编译时&#xff0c;变量必须声明其数据类型。在 Java 中&#xff0c;数据类型可以分为两大类&#xff1a;基本数据类型&#xff08;又称原始数据类型&#xff09;和引用数据类型。本文将详细介绍这两种数据类型。 一、基本数据类…

战网国际服加速器用哪个好 暴雪战网好用加速器介绍

战网国际版&#xff0c;又称Battle.net环球版&#xff0c;是暴雪娱乐操盘的全球性游戏互动平台&#xff0c;它跨越地理界限&#xff0c;服务于全球游戏爱好者。与地区限定版本相异&#xff0c;国际版赋予玩家自由进入暴雪旗下众多经典游戏的权利&#xff0c;无论身处何方&#…

对比测评3款BI分析工具

前不久&#xff0c;一位准备入职阿里的学弟问我&#xff0c;他要做电商数据分析&#xff0c;电商有庞杂的标签、模型、数据和业务逻辑&#xff0c;菜鸟应该要具备什么样的分析能力啊&#xff1f; 我看了他的岗位职责&#xff0c;主要是负责经营决策支持、专题分析和数据看板搭…

leetcode-字符串变形-104

题目要求 思路 1.首先根据ASCII的规则&#xff0c;把字符串大小写替换&#xff0c;空格保持不变 2.将整个字符串进行翻转 3.以空格为区间&#xff0c;将区间内的字符串进行翻转&#xff0c;其中翻转的函数reverse() 代码实现 class Solution { public:string trans(string s…

【C语言】通讯录系统实现

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1制作菜单函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人D…

Shell之常用命令

目录 1.排序工具--sort命令 1.1 快读查找一个目录中最大文件 2.去重工具--uniq命令 2.1 分析判断远程登录错误次数&#xff0c;禁止该用户远程登录 3.修改工具--tr命令 4.列截取工具--cut命令 5.分割文件工具--split命令 6.合并文件列--paste命令 7.扫描工具--eval命令…

OpenAI和互联网行业的发展,有着异曲同工之处

当OpenAI首席技术官米拉穆拉提发布桌面版本的ChatGPT和新的旗舰模型—GPT-4o&#xff0c;OpenAI的发展&#xff0c;进入到了一个真正意义上的奇点时刻。 OpenAI的短短26分钟的发布会&#xff0c;却依然引发了不少波澜。 无论是ChatGPT-4o的完全免费&#xff0c;抑或是推出PC桌…

【Linux】常用指令、热键与权限管理

一、常用指令 &#xff08;1&#xff09;ls 功能&#xff1a;列出指定目录下的所有子目录与文件 用法&#xff1a;ls &#xff08;选项&#xff09; &#xff08;目录或文件名&#xff09; 常用选项&#xff1a; -a&#xff1a;列出目录下的所有文件&#xff0c;包括隐藏…

c语言中数字字符串和数字互转

#include <getopt.h> #include <stdio.h> #include <stdlib.h>#define MAX_PATH 256 char filename[MAX_PATH 5]; int main(int argc, char** argv) {//数字字符串转数字const char* kk "689";int zhi atoi(kk) 8;//数字字符串转doubledoub…

从HTTP迁移到HTTPS:一篇全面的测试方案设计指南

在当今的互联网世界里&#xff0c;数据安全性日益受到重视。将网站从HTTP迁移到HTTPS已成为提升数据传输安全性的重要一步。HTTPS&#xff08;超文本传输安全协议&#xff09;通过SSL/TLS协议为客户端和服务器之间的通信加密&#xff0c;保护数据免受中间人攻击&#xff08;MIT…

代码随想录训练营Day 29|力扣39. 组合总和、40.组合总和II、131.分割回文串

1.组合总和 题目链接/文章讲解&#xff1a; 代码随想录 视频讲解&#xff1a;带你学透回溯算法-组合总和&#xff08;对应「leetcode」力扣题目&#xff1a;39.组合总和&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 代码&#xff1a;&#xff08;未剪枝版 &#xf…

ChatGPT未来可能应用于iPhone?

苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日&#xff0c;苹果公司正与OpenAI进行深入讨论&#xff0c;计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…

vue2 八大组件通信,父子通信,跨层级通信,事件总线,vuex等

文章目录 什么是组件通信&#xff1f;父子通信流程propsProps 定义Props 作用特点数组写法对象写法&#xff08;props校验&#xff09;简写只验证数据类型&#xff1a;完整写法&#xff0c;完整的验证&#xff1a; props父向子传值用props父传子在子组件中修改props $emit子向父…

自定义 Gradle 插件进行统一的静态代码分析

静态代码分析是一项了不起的技术, 它能让代码库更易于维护. 但是, 如果你在不同的版本库中拥有多个服务(可能由不同的团队开发), 如何才能让每个人都遵循既定的代码风格呢? 一个好办法是将所有规则封装在一个插件中, 该插件会在每个项目构建时自动执行所需的验证. 因此, 在本…

最新版rancher环境配置安装和集群搭建详细教程记录

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

2024-05-15 问AI: 介绍一下 , Tacotron系列

文心一言 Tacotron系列是由谷歌开发的&#xff0c;主要用于文本到语音&#xff08;TTS&#xff09;转换的模型。该系列模型基于端到端的序列到序列&#xff08;Seq2Seq&#xff09;架构&#xff0c;能够直接从文本中生成听起来自然的语音。 Tacotron模型是首个端到端的TTS深度…

BGP学习三:BGP路由优选12条规则,闪亮登场啦啦啦啦啦

目录 一.BGP策略工具 &#xff08;1&#xff09;Router-policy作用 &#xff08;2&#xff09;组成部分 &#xff08;3&#xff09;router-policy注意事项 二.优选规则 ①丢弃下一跳不可达 (1)优选prefered-value值大的路由 1.首选优先级 (2)优选local-preference(本地…

Fast-Poisson-Image-Editing代码介绍(二)

目录 2.fpei文件下 2.6 number_solver.py 2.7 process.py 2.8 taichi_solver.py 3. 算法总结 4. 代码运行 4.1 测试 4.2 基于GUI后端自定义框输出编辑图像结果 4.2.1 下载open-cv 4.2.2 输入命令 4.2.3 自定义框 4.2.4 按ESC退出 接续Fast-Poisson-Image-Editing代码…

企业研发必备网络:这些关键特性,你get了吗?

对于以研发为核心的企业&#xff0c;如软件开发、生物制药、智能汽车等&#xff0c;安全、稳定的研发网络可是他们业务发展不可或缺的。那么&#xff0c;这些研发网络究竟有哪些独特之处&#xff0c;又能为企业带来哪些价值呢&#xff1f; 首先&#xff0c;我们知道企业研发常常…