<font color="red">[置顶]</font>

简介:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入两个命名空间
using System.Data;
using System.Data.SqlClient;

namespace MyFriends
{
    class DBHelper
    {
        //创建连接字符串
        private const string connStr = @"Data Source=.;Initial Catalog=MySchool;Integrated Security=True";

        /// <summary>
        /// 查询第一行第一列内容的通用方法(cmd.ExecuteScalar)
        /// </summary>
        /// <param name="sql">查询用的sql</param>
        /// <returns>第一行第一列内容,object通用类型:null(DB异常)、非null(DB无异常)</returns>
        public object SelectOne(string sql)
        {
            //用来保存查询结果的第一行第一列内容
            object obj = null;
            //创建连接
            SqlConnection conn = new SqlConnection(connStr);
            //创建cmd对象,用来执行命令
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                //打开连接
                conn.Open();
                //cmd执行查询命令,并将第一行第一列内容保存到局部变量obj
                obj = cmd.ExecuteScalar();
            }
            catch (Exception ex)
            {
                //输出异常
                Console.WriteLine(ex.Message);
            }
            finally
            {
                //关闭连接
                conn.Close();
            }
            //返回局部变量obj
            return obj;
        }

        /// <summary>
        /// 查询多行多列内容的通用方法(datareader)
        /// </summary>
        /// <param name="sql">查询用的sql</param>
        /// <returns>datareader对象:null(DB异常)、非null(DB无异常)</returns>
        public SqlDataReader SelectAll(string sql)
        {
            //用来保存查询结果,保存到dr中
            SqlDataReader dr = null;
            //创建连接
            SqlConnection conn = new SqlConnection(connStr);
            //创建cmd对象,用来执行命令
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                //打开连接
                conn.Open();
                //cmd执行查询ExecuteReader命令,返回多行内容并保存到局部变量dr
                //调用该方法的地方,如果关闭datareader,将同时关闭连接
                dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                //输出异常
                Console.WriteLine(ex.Message);
            }
            //返回局部变量dr
            return dr;
        }

        /// <summary>
        /// 增删改的通用方法(cmd.ExecuteNonQuery)
        /// </summary>
        /// <param name="sql">增删改用的sql</param>
        /// <returns>受影响的行数:-1(DB异常)、0(增删改失败)、>0(增删改成功)</returns>
        public int Update(string sql)
        {
            //用来保存执行增删改后受影响的行数
            int result = -1;
            //创建连接
            SqlConnection conn = new SqlConnection(connStr);
            //创建cmd对象,用来执行命令
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                //打开连接
                conn.Open();
                //cmd执行增删改命令,并将受影响的行数保存到局部变量result
                result = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                //输出异常
                Console.WriteLine(ex.Message);
            }
            finally
            {
                //关闭连接
                conn.Close();
            }
            //返回局部变量result
            return result;
        }

        //--------------------------------------------------------------------------------------

        //用来保存查询结果,保存到ds中
        DataSet ds = null;
        //通用的数据适配器da
        SqlDataAdapter da = null;

        /// <summary>
        /// 查询多行多列内容的通用方法(dataset)
        /// </summary>
        /// <param name="sql">查询用的sql</param>
        /// <param name="tableName">将数据放入ds中的该表</param>
        /// <returns>dataset对象:null(DB异常)、非null(DB无异常)</returns>
        public DataSet DSSelectAll(string sql,string tableName)
        {
             //创建连接
            SqlConnection conn = new SqlConnection(connStr);
            //初始化ds
            ds = new DataSet();
            try
            {
                //创建数据适配器da
                da = new SqlDataAdapter(sql, conn);
                //da填充数据集ds,将数据填充到ds的tableName表中
                da.Fill(ds,tableName);
            }
            catch (Exception ex)
            {
                //输出异常
                Console.WriteLine(ex.Message);
            }
            //返回局部变量ds
            return ds;
        }

        /// <summary>
        /// 增删改的通用方法(SqlCommandBuilder)
        /// 注意:sql必须满足单表+包含主键
        /// </summary>
        /// <param name="tableName">将ds中tableName表的数据更新到DB</param>
        /// <returns>受影响的行数:-1(DB异常)、0(增删改失败)、>0(增删改成功)</returns>
        public int DSUpdate(string tableName)
        {
            //用来保存执行增删改后受影响的行数
            int result = -1;
            try
            {
                //创建SqlCommandBuilder对象,已da作为参数
                SqlCommandBuilder builder = new SqlCommandBuilder(da);
                //将ds中tableName表的数据更新到DB
                result=da.Update(ds, tableName);
            }
            catch (Exception ex)
            {
                //输出异常
                Console.WriteLine(ex.Message);
            }
            //返回局部变量result
            return result;
        }
    }
}

目录
相关文章
保存HTML页面源码至文件
首先在uses中加入ActiveX,MSHTML,OleCtrls,SHDocVw,然后编写代码 procedure SaveHTMLSourceToFile(const FileName:string;WB:TWebBrowser); var PersistStream:IPersistSt...
783 0
|
10天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
391 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
3天前
|
存储 安全 前端开发
如何将加密和解密函数应用到实际项目中?
如何将加密和解密函数应用到实际项目中?
197 138
|
9天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
376 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
3天前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
195 136
|
21天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1347 8
|
8天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。