Ado.Net 访问数据库

2024-06-23 11:58
文章标签 访问 数据库 net ado

本文主要是介绍Ado.Net 访问数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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;
        }
    }
}

这篇关于Ado.Net 访问数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087095

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结