C#系列-访问SqlServer+Mysql+Oracle数据库(6)

目录

一、      C#访问SqlServer数据库

二、      C#异步读取SqlServer数据库

三、      C#访问Mysql数据库

四、      C#访问Oracle数据库

  • 一,C#访问SqlServer数据库

 在C#中访问SQL Server数据库,你通常会使用ADO.NET (ActiveX Data Objects .NET),它是.NET Framework提供的一组用于访问数据的类库。ADO.NET中最常用的两个组件是`SqlConnection`和`SqlCommand`。以下是一个简单的示例,演示如何在C#中连接到SQL Server数据库并执行查询:

首先,确保你的项目中已经添加了对`System.Data.SqlClient`的引用。这个引用通常在.NET项目中默认包含。

using System;

using System.Data;

using System.Data.SqlClient;

class Program

{

    static void Main()

    {

        // SQL Server连接字符串

        string connectionString = "Server=你的服务器地址;Database=你的数据库名;User Id=你的用户名;Password=你的密码;";

        try

        {

            // 使用SqlConnection建立数据库连接

            using (SqlConnection connection = new SqlConnection(connectionString))

            {

                connection.Open();

                // 使用SqlCommand执行SQL查询

                using (SqlCommand command = new SqlCommand("SELECT * FROM 你的表名", connection))

                {

                    // 使用SqlDataReader读取查询结果

                    using (SqlDataReader reader = command.ExecuteReader())

                    {

                        while (reader.Read())

                        {

                            Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));

                        }

                    }

                }

            }

        }

        catch (SqlException e)

        {

            // 处理异常

            Console.WriteLine(e.ToString());

        }

    }

}

在这个示例中:

- `connectionString` 是用来连接SQL Server数据库的连接字符串。你需要将其中的`你的服务器地址`、`你的数据库名`、`你的用户名`和`你的密码`替换为实际的值。

- `SqlConnection` 类用于建立和管理与SQL Server数据库的连接。

- `SqlCommand` 类用于执行SQL命令和存储过程。

- `SqlDataReader` 类用于读取从SQL Server检索的行。

请注意,为了安全起见,不要在代码中硬编码数据库凭据(如用户名和密码)。在生产环境中,应该使用安全的方式(如配置文件、环境变量或密钥管理系统)来存储和检索这些凭据。

此外,你还可以使用`SqlDataAdapter`和`DataSet`来执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。

最后,确保你的项目引用了正确的SQL Server客户端库。对于.NET Core和.NET 5/6/7+项目,你可能需要安装`System.Data.SqlClient` NuGet包。对于较旧的.NET Framework项目,`System.Data.SqlClient`通常已经包含在内。

  • 二,C#异步读取SqlServer数据库

 C#中异步读取SQL Server数据库通常涉及使用ADO.NET的异步API,特别是SqlCommand类的异步方法,如ExecuteReaderAsync,来执行查询并获取结果。以下是一个使用SqlConnectionSqlCommand异步方法从SQL Server数据库中异步读取数据的例子:

csharp代码

using System;

using System.Data.SqlClient;

using System.Threading.Tasks;

class Program

{

static async Task Main(string[] args)

{

// SQL Server连接字符串

string connectionString = "Server=localhost;Database=myDatabase;User Id=myUsername;Password=myPassword;";

// 异步查询数据

using (SqlConnection connection = new SqlConnection(connectionString))

{

await connection.OpenAsync();

using (SqlCommand command = new SqlCommand("SELECT * FROM myTable", connection))

{

// 执行异步查询并获取SqlDataReader

using (SqlDataReader reader = await command.ExecuteReaderAsync())

{

// 读取数据

while (await reader.ReadAsync())

{

Console.WriteLine($"Column1: {reader["Column1"]}, Column2: {reader["Column2"]}");

}

}

}

}

}

}

在这个例子中,我们首先创建了一个SqlConnection对象,并打开了与SQL Server数据库的连接。然后,我们创建了一个SqlCommand对象,并指定了要执行的SQL查询。使用ExecuteReaderAsync方法异步执行查询并获取一个SqlDataReader对象,该对象允许我们遍历查询结果。

while循环中,我们使用ReadAsync方法异步读取SqlDataReader中的下一行,并输出列的值。当没有更多的行可读时,ReadAsync将返回false,循环将结束。

请注意以下几点:

  1. 使用using语句来确保资源(如连接和命令)在使用后被正确释放。
  2. 使用await关键字来异步等待操作完成,从而避免阻塞主线程。
  3. 替换连接字符串、查询和列名为适合你的数据库设置的值。

此外,如果你使用的是.NET Core.NET 5/6/7+等较新的版本,你还可以考虑使用Entity Framework CoreEF Core)这样的ORM框架,它提供了更高级别的抽象和异步API来访问数据库。

异步编程是处理I/O密集型操作(如数据库访问)时的重要技术,它能够提高应用程序的响应性和吞吐量。

  • 三,C#访问Mysql数据库

C#中访问MySQL数据库,你通常会使用MySQL官方提供的MySQL Connector/NET库,它提供了与ADO.NET类似的接口来与MySQL数据库进行交互。以下是一个简单的示例,演示如何在C#中连接到MySQL数据库并执行查询:

首先,确保你的项目中已经安装了MySQL Connector/NET。你可以通过NuGet包管理器来安装它。在Visual Studio中,右键点击项目 -> 选择管理NuGet” -> 搜索“MySql.Data” -> 点击安装

csharp代码

using System;

using MySql.Data.MySqlClient;

class Program

{

static void Main()

{

// MySQL连接字符串

string connectionString = "server=你的服务器地址;database=你的数据库名;user=你的用户名;password=你的密码;port=3306;";

try

{

// 使用MySqlConnection建立数据库连接

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

connection.Open();

// 使用MySqlCommand执行SQL查询

using (MySqlCommand command = new MySqlCommand("SELECT * FROM 你的表名", connection))

{

// 使用MySqlDataReader读取查询结果

using (MySqlDataReader reader = command.ExecuteReader())

{

while (reader.Read())

{

Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));

}

}

}

}

}

catch (MySqlException e)

{

// 处理异常

Console.WriteLine(e.ToString());

}

}

}

在这个示例中:

  • connectionString 是用来连接MySQL数据库的连接字符串。你需要将其中的你的服务器地址、你的数据库名、你的用户名和你的密码替换为实际的值。
  • MySqlConnection 类用于建立和管理与MySQL数据库的连接。
  • MySqlCommand 类用于执行SQL命令和存储过程。
  • MySqlDataReader 类用于读取从MySQL检索的行。

请注意,和SQL Server一样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。

此外,你还可以使用MySqlDataAdapterDataSet来执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。

确保你的MySQL Connector/NET库版本与你的MySQL服务器版本兼容,并经常检查是否有更新,以确保安全性和性能。

  • 四,C#访问Oracle数据库

 C#中访问Oracle数据库,你通常会使用Oracle官方提供的Oracle Data Provider for .NET (ODP.NET),这是一个用于.NET应用程序的Oracle数据库驱动程序。ODP.NET提供了两种主要的接口:Oracle.ManagedDataAccess.Client(托管驱动)和Oracle.DataAccess.Client(非托管驱动,已过时并在Oracle 19c后不再推荐使用)。

以下是使用Oracle.ManagedDataAccess.Client的示例,展示如何在C#中连接到Oracle数据库并执行查询:

首先,确保你的项目中已经安装了Oracle.ManagedDataAccess.Client。你可以通过NuGet包管理器来安装它。在Visual Studio中,右键点击项目 -> 选择管理NuGet” -> 搜索“Oracle.ManagedDataAccess.Client” -> 点击安装

csharp代码

using System;

using Oracle.ManagedDataAccess.Client;

class Program

{

static void Main()

{

// Oracle连接字符串

string connectionString = "User Id=你的用户名;Password=你的密码;Data Source=你的Oracle服务名;";

try

{

// 使用OracleConnection建立数据库连接

using (OracleConnection connection = new OracleConnection(connectionString))

{

connection.Open();

// 使用OracleCommand执行SQL查询

using (OracleCommand command = new OracleCommand("SELECT * FROM 你的表名", connection))

{

// 使用OracleDataReader读取查询结果

using (OracleDataReader reader = command.ExecuteReader())

{

while (reader.Read())

{

Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));

}

}

}

}

}

catch (OracleException e)

{

// 处理异常

Console.WriteLine(e.ToString());

}

}

}

在这个示例中:

  • connectionString 是用来连接Oracle数据库的连接字符串。你需要将其中的你的用户名、你的密码和你的Oracle服务名替换为实际的值。
  • OracleConnection 类用于建立和管理与Oracle数据库的连接。
  • OracleCommand 类用于执行SQL命令和存储过程。
  • OracleDataReader 类用于读取从Oracle检索的行。

请注意,Oracle的连接字符串可能因Oracle数据库的版本和配置而有所不同。确保你使用正确的连接字符串格式。

同样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。

ODP.NET还提供了OracleDataAdapterDataSet,以便执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。

最后,请确保你使用的ODP.NET版本与你的Oracle数据库版本兼容,并经常检查Oracle官方网站以获取最新的驱动程序和更新。

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

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

相关文章

“深度解析Java虚拟机:运行时数据区域、垃圾收集、内存分配与回收策略、类加载机制“

"深度解析Java虚拟机:运行时数据区域、垃圾收集、内存分配与回收策略、类加载机制" Java 虚拟机一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存 二、垃圾收集判断一个对象是否可被回收1. 引用计数算法2. 可达性分析算…

Python列表中的insert功能及用法举例

Python列表中的insert功能及用法举例 🌵文章目录🌵 🌳引言🌳🌳insert()🌳🍀功能介绍🍀🍀语法🍀🍀示例🍀🍀注意事项&#x…

【Java】小白友好的SpringBoot简单开发基础学习笔记

目录 简介 简单代码示例 配置文件种类 选择特定profile 从配置文件获取数据 Spring Boot整合MyBatis代码示例 简介 Spring Boot是一个用于创建独立、生产级别的Spring应用程序的开源框架。它简化了基于Spring框架的应用程序的开发和部署过程,提供了一种快速构…

【前后端的那些事】webrtc入门demo(代码)

文章目录 前端代码apivue界面 后端modelwebsocketconfigresource 龙年到了,先祝福各位龙年快乐,事业有成! 最近在搞webrtc,想到【前后端的那些事】好久都没有更新了,所以打算先把最近编写的小demo发出来。 p2p webrt…

for循环的多重跳出

for的多重跳出 1.前言2.标签使用3.使用异常的方式 本文在jdk17中测试通过 1.前言 前段时间面试时,面试官问我多重for循环如何跳出,我懵了,今天特别的研究了一下 本文主要说的不是continue与break,而是少用的另类操作 1.continue:…

数据结构——5.4 树、森林

5.4 树、森林 概念 树的存储结构 双亲表示法 孩子表示法 孩子兄弟表示法(二叉树表示法): 二叉树每个结点有三个变量 ① 二叉树结点值:原树结点的值 ② 二叉树左孩子:原树结点的最左孩子 ③ 二叉树右孩子&#xff1a…

计算机网络——04接入网和物理媒体

接入网和物理媒体 接入网络和物理媒体 怎样将端系统和边缘路由器连接? 住宅接入网络单位接入网络(学校、公司)无线接入网络 住宅接入:modem 将上网数据调制加载到音频信号上,在电话线上传输,在局端将其…

【C语言|数据结构】数据结构顺序表

目录 一、数据结构 1.1概念 1.2总结 1.3为什么需要数据结构? 二、顺序表 1.顺序表的概念及结构 1.1线性表 2.顺序表分类 2.1顺序表和数组的区别 2.2顺序表的分类 2.2.1静态顺序表 2.2.1.1概念 2.2.1.2缺陷 2.2.2动态顺序表 三、动态顺序表的实现 3.1新…

如何部署一个高可用的 Linux 集群?

部署一个高可用的 Linux 集群需要经过多个步骤和考虑因素。以下是一个简要的指南,帮助您了解如何部署一个高可用的 Linux 集群: 确定需求和目标:在开始部署之前,您需要明确高可用性的定义和目标。对于一些组织而言,高…

寒假提升(6)[杂烩典型题]

天可补,海可填,南山可移。 日月既往,不可复追。 ——曾国藩 知识点 1、关于整形提升2、大小端3、使用函数时参数的影响3、1、计算大小(有函数存在)3、2、计算大小(无函数存在)3、3、形参和实参 4、关于赋值 1、关于整形提升 char a101; int …

算法竞赛例题讲解:平方差 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 C平方差

题目描述 给定 L L L和 R R R,问 L ≤ x ≤ R L\leq x \leq R L≤x≤R中有多少个数 x x x满足存在整数 y y y, z z z使得 x y 2 − z 2 x y^{2} - z^{2} xy2−z2。 输入格式 输入一行包含两个整数 L L L, R R R,用一个空格分隔。 输出格式 输出一…

计算机设计大赛 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …

刷题13 数组

989. 数组形式的整数加法 整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。例如,对于 num 1321 ,数组形式是 [1,3,2,1] 。 给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num k 的 数组形式 。 输入…

12118 - Inspector‘s Dilemma (UVA)

题目链接如下: Online Judge 脑雾严重,这道题一开始我想的方向有问题.....后来看了别人的题解才写出来的..... 用的是欧拉路径的充要条件;以及数连通块。需要加的高速路数目 连通块个数 - 1 sum(每个连通块中连成欧拉路径需要…

EMC学习笔记(二十三)降低EMI的PCB设计指南(三)

双层板电源分配 1.单点与多点分布2.星型分布3.创建网格平面4.旁路和磁珠5.将噪声保持在芯片附近 tips:资料主要来自网络,仅供学习使用。 1.单点与多点分布 在一个真正的单点配电系统中,每个有源元件都有自己独立的电源和地,这些…

Hibernate JPA-@PreUpdate 和@PrePersist、@MappedSuperclass应用场景

文章目录 PrePersist注解 和 PreUpdate注解PreUpdatePrePersist 应用场景给一张表加上create_time,update_time这样的字段,想实现自动保存,更新这两个字段 MappedSuperclassInheritanceSINGLE_TABLE(将所有父类和子类集合在一张表)TABLE_PER_…

【React】如何使antd禁用状态的表单输入组件响应点击事件?

最近遇到一个需求&#xff0c;需要在<Input.textarea>组件中&#xff0c;设置属性disabled为true&#xff0c;使textarea响应点击事件&#xff0c;但直接绑定onClick并不会在禁用状态下被响应。 解决方法1 之后尝试了很多方法&#xff0c;比如设置csspointer-events:no…

【Make编译控制 07】CMake常用命令

目录 一、变量相关命令 1. 定义变量 2. 设置C标准 3. 设置输出路径 二、文件相关命令 1. file 命令 2. aux_source_directory 命令 2. include_directories 命令 三、字符串相关命令 1. 字符串输出 2. 字符串拼接 3. 字符串移除 前情提示&#xff1a;【Make编译控制 …

【Dubbo源码二:Dubbo服务导出】

入口 Dubbo服务导出的入口&#xff1a;服务导出是在DubboBootstrapApplicationListener在监听到ApplicationContextEvent的ContextRefreshedEvent事件后&#xff0c;会触发dubboBootstrap.start(), 在这个方法中最后会导出Dubbo服务 DubboBootstrapApplicationListener Dub…

Python装饰器详解:实例分析与使用场景

在Python中,装饰器是一种强大的语法特性,允许在不修改原始代码的情况下,动态地修改或增强函数的行为。本文将通过两个实际的例子,分别介绍了计时装饰器和缓存装饰器,并深入探讨了它们的实现原理和使用场景。 1. 计时装饰器 import timedef timing_decorator(func):def w…