ADO .Net操作SQL Server数据库

//ADO.NET是.NET Framework提供的数据访问服务的类库,应用程序可以使用ADO.NET连接到这些数据源,并检索、处理和更新数据
//常用的数据源包括四种:
1Microsoft SQL Server数据源:使用System.Data.SqlClient名称空间

2OLEDB数据源:使用System.Data.OleDb名称空间

3ODBC数据源:使用System.Data.Odbc名称空间

4Oracle数据源:使用System.Data.OracleClient名称空间

ADO.NET用于访问和处理数据的类库包含以下两个组件:

  • 1.NET Framework 数据提供程序
  • 2DataSet

Microsoft SQL Server .NET Framework数据提供程序:

  • SqlConnection:建立与Microsoft SQL Server数据源的连接
  • SqlCommand:对数据源执行各种SQL命令
  • SqlDataReader:从数据源中抽取数据(只读)
  • SqlDataAdapter:用数据源填充DataSet

//一.SQL Server数据库查询

using (SqlConnection conn = new SqlConnection())
{
    //创建打开连接
    conn.ConnectionString = "";
    conn.Open();

    //创建查询
    SqlCommand cmd1 = new SqlCommand("select id,name from users", conn);

    //执行查询ExecuteReader()
    SqlDataReader sdr = cmd1.ExecuteReader();

    //获取查询结果
    Console.WriteLine($"id\tname");
    if (sdr.Read())
        Console.WriteLine($"{sdr[0]}\t{sdr[1]}");
    sdr.Close();
}

//二.使用ADO.NET在数据库表中 "增删改" 操作的一般步骤为:
//1.先建立数据库连接
//2.然后使用SQL Insert/Update/Delete语句创建命令,
//3.并使用Command 的 Parameters 属性来设置输入参数
//4.最后使用命令的ExecuteNonQuery()方法执行数据库记录插入操作,并根据返回的结果判断插入的结果

using (SqlConnection conn = new SqlConnection())
{
    //创建连接
    conn.ConnectionString = "";
    conn.Open();

    //创建查询
    //SqlCommand cmd_update = new SqlCommand("update users set name = @name where id = @id", conn);
    //SqlCommand cmd_delete = new SqlCommand("delete from users where id = @id", conn);
    SqlCommand cmd_insert = new SqlCommand("insert users(id,name) values(@id,@name)", conn);
    cmd_insert.CommandType = System.Data.CommandType.Text;
    //设置参数
    //方法1
    SqlParameter[] sqlparams = new SqlParameter[2] { new SqlParameter("@id",10), new SqlParameter("@name", "David") } ;
    cmd_insert.Parameters.AddRange(sqlparams);
    //方法2
    cmd_insert.Parameters.Add(new SqlParameter("@id", 10));
    cmd_insert.Parameters.Add(new SqlParameter("@name", "David"));
    //方法3
    cmd_insert.Parameters.AddWithValue("@id", 10);
    cmd_insert.Parameters.AddWithValue("@name", "David");

    //执行查询ExecuteReader()
    int r = cmd_insert.ExecuteNonQuery();

    //获取查询结果
    if(r == 1)
    {
        Console.WriteLine("insert OK");
    }
    else
    {
        Console.WriteLine("insert failed");
    }
}


//三.使用DataAdapter和DataSet访问数据库
//使用DataAdapter和DataSet访问数据库的典型步骤如下:
//(1)建立数据库连接
//(2)创建DataAdapter, 从DataAdapter填充DataSet
//(3)操作和处理DataSet
//(4)使用DataAdapter更新数据源


using (SqlConnection con = new SqlConnection("conn string"))
{
    //打开数据库连接
    con.Open();

    //DataAdapter用于从数据源检索数据并填充DataSet中的表(select command),
    //DataAdapter还将对DataSet的更改解析回数据源(InsertCommand、UpdateCommand或DeleteCommand)
    //创建DataAdapter,明确connection和command
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.InsertCommand = new SqlCommand("select sql", con);
                
    //创建dataset对象
    DataSet ds = new DataSet("Users_ds");

    //从DataAdapter填充到DataSet
    //DataAdapter的Fill方法使用DataAdapter的SelectCommand的结果集来填充DataSet
    //Fill方法使用DataReader对象隐式的返回用于在DataSet上创建的表以及用于填充DataSet中的数据
    sda.Fill(ds);

    //操作和处理dateset
    Console.WriteLine($"id\tname");
    foreach (DataRow dr in ds.Tables["Users_ds"].Rows) 
    {
        Console.WriteLine($"dr[0]\tdr[1]");
    }
    //更新datesheet中第一行的指定字段数据
    ds.Tables[0].Rows[0]["name"] = "LittleStone";

    //将dateset数据更新到数据库
    sda.Update(ds);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32---SG90舵机控制(HAL库,含源码)

写在前面:在嵌入式的项目中,舵机是一个十分常见的元器件模块,其主要的功能是实现机械转动,实质上舵机是一个伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。例如在机器人的电控制器系统中,…

Java8中Stream流API最佳实践Lambda表达式使用示例

文章目录 一、创建流二、中间操作和收集操作筛选 filter去重distinct截取跳过映射合并多个流是否匹配任一元素:anyMatch是否匹配所有元素:allMatch是否未匹配所有元素:noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…

在线BLOG网|基于springboot框架+ Mysql+Java+JSP技术的在线BLOG网设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

C语言学习过程总结(18)——指针(6)

一、数组指针变量 在上一节中我们提到了,指针数组的存放指针的数组,那数组指针变量是什么呢? 显而易见,数组指针变量是指针 同样类比整型指针变量和字符指针变量里面分别存放的是整型变量地址和字符变量地址,我们可以…

每周AI新闻(2024年第11周)Meta公布Llama 3集群细节 | Sora将于年内推出 | 全球首个AI软件工程师发布

这里是陌小北,一个正在研究硅基生命的碳基生命。正在努力成为写代码的里面背诗最多的,背诗的里面最会写段子的,写段子的里面代码写得最好的…厨子。 每周日解读每周AI大事件。 欢迎关注同名公众号【陌北有棵树】,关注AI最新技术…

第二十四天-数据可视化Matplotlib

目录 1.介绍 2.使用 1. 安装: 2.创建简单图表 3.图表类型 1.一共分为7类 2.变化 1.折线图 3.分布 ​编辑 1.直方图 2.箱型图 4.关联 1. 散点图: 2.热力图: 5.组成 1.饼图 2.条形图 6.分组 1.簇型散点图 2.分组条形图 3.分…

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/ollama/ollama/blob/main/docs/li…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一:方法二:使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

HCIA——30奈奎斯特定理、香农定理

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextTimer)

通过文本显示计时信息并控制其计时器状态的组件。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextTimer(options?: TextTimerOptions) 参数: 参数名参数类型…

Kotlin进阶之协程从入门到放弃

公众号「稀有猿诉」 原文链接 Kotlin进阶之协程从入门到放弃 协程Coroutine是最新式的并发编程范式,它是纯编程语言层面的东西,不受制于操作系统,轻量级,易于控制,结构严谨,不易出错,易于…

深入浅出理解 AI 生图模型

目录 引言 一、Stable Diffusion原理 首先 随后 最后 二、DDPM模型 1 资料 2 原理 扩散过程 反向过程 3 公式结论 三、优缺点 优点: 缺点: 四、改进与完事 LDM代表作 原理概括 Latent Space(潜空间) 五、总结 引…

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说,安全意味着一种成本。但重要的是如何获得适合的量,而不是越多越好。然而,你如何决定什么时候可以有足够的安全性,以及你如何获得它?则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

【PyTorch】进阶学习:一文详细介绍 load_state_dict() 的应用场景、实战代码示例

【PyTorch】进阶学习:一文详细介绍 load_state_dict() 的应用场景、实战代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入…

vb.net+zxing.net随机彩色二维码、条形码

需要zxing库支持ZXing.NET Generate QR Code & Barcode in C# Alternatives | IronBarcode 效果图: 思路:先生成1个单位的二维码,然后再通过像素填充颜色,颜色数组要通过洗牌算法 洗牌算法 Dim shuffledCards As New List(…

C#控制台贪吃蛇

Console.Write("");// 第一次生成食物位置 // 随机生成一个食物的位置 // 食物生成完成后判断食物生成的位置与现在的蛇的身体或者障碍物有冲突 // 食物的位置与蛇的身体或者障碍物冲突了,那么一直重新生成食物,直到生成不冲突…

GenAI开源公司汇总

主要分类如下: 1. 基础模型:这些是机器学习和AI的核心模型提供商,它们提供基础的算法和技术支持。 2. 模型部署与推断:提供云服务和计算资源,帮助用户部署和运行AI模型。 3. 开发者工具:支持AI/ML的开发…

【网络原理】TCP 协议中比较重要的一些特性(三)

目录 1、拥塞控制 2、延时应答 3、捎带应答 4、面向字节流 5、异常情况处理 5.1、其中一方出现了进程崩溃 5.2、其中一方出现关机(正常流程的关机) 5.3、其中一方出现断电(直接拔电源,也是关机,更突然的关机&am…

拜占庭将军问题相关问题

1、拜占庭将军问题基本描述 问题 当我们讨论区块链共识时,为什么会讨论拜占庭将军问题? 区块链网络的本质是一个分布式系统,在存在恶意节点的情况下,希望 整个系统当中的善良节点能够对于重要的信息达成一致,这个机…

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码 上机代码: # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…