在 C# 中选择查询数据库

Muhammad Husnain 2023年10月12日
  1. 什么是数据库
  2. C# 中的数据库连接
在 C# 中选择查询数据库

本文将指导你建立与 C# 应用程序的数据库连接,并使用数据库中的 SELECT 查询从不同的表中获取数据。

什么是数据库

数据库不仅仅是以表格形式组织的数据集合,还有更多。它以有组织的结构表示数据,具有适当的命名约定以及与其他表的关系。

数据库管理系统还提供了一种与数据库交互的语言(例如 SQL),该语言非常接近英语,因此用户非常容易理解。它还为我们提供了数据安全和优化方案,以提高数据操作的性能。

C# 中的数据库连接

通常,程序员使用数据库来存储他们的应用程序的数据。C# 语言为 Oracle 数据库和 Microsoft SQL server 数据库提供数据库编程。

C# 也可以与许多其他数据库一起使用,但以上两个是最常见和广泛使用的。无论你的数据库是什么,每个数据库背后的逻辑都是相同的。

本文将使用 SQL Server 数据库来执行操作。数据库操作所需的命名空间System.data.SqlClient

它包含数据库连接和操作期间所需的所有类。

在 SQL Server 中创建数据库

第一步是创建一个需要在 SQL Server 中与之交互的数据库。该数据库是使用以下查询创建的。

create database mydb;

use mydb;

CREATE TABLE Student(
    studentID varchar(20) NOT NULL PRIMARY KEY,
    stuentName varchar(60) NOT NULL
);

insert into Student values("BS01", 'David');
insert into Student values("BS02", 'John');

执行这些查询后,将创建一个包含表 Student 的数据库,其中包含 2 行。

C# 中与数据库建立连接

为了与数据库交互,你需要一些参数。这些参数组合起来形成一个连接字符串。

  1. 数据库名称 - 你需要提供你需要从中读取数据的数据库的名称。建议一次只使用一个数据库。
  2. 数据库凭证 - 与数据库交互总是有一个用户名和密码,因此你需要提供该授权用户名和密码。
  3. 一些可选参数 - 你还可以提供一些可选参数。例如,你可以设置一个超时值,如果数据库在一段时间内保持不活动状态,则应关闭连接。

让我们看一下示例代码,我们将在其中执行与数据库的连接。假设数据库用户名是 usr,密码是 usr123

SqlConnection conn;
string connectString =
    @"Data Source=DESKTOP-FQ8R559;Initial Catalog=mydb;User ID=usr;Password=usr123";

conn = new SqlConnection(connectString);
conn.Open();
Console.WriteLine("Connection Established");

从数据库中读取数据

我们需要 SqlCommand 类和 SqlDataReader 从数据库中读取数据。SqlCommand 类用于在数据库上运行命令。

运行 Select 命令会生成 Resultset。这个 Resultset 可以使用 SqlDataReader 类读取。

让我们看看下面的代码。

SqlCommand cmd;
SqlDataReader dataReader;
string sql = "Select * from Student";
cmd = new SqlCommand(sql, conn);
dataReader = cmd.ExecuteReader();
Console.WriteLine("Data from the Database..");
while (dataReader.Read()) {
  Console.WriteLine(dataReader.GetValue(0) + " || " + dataReader.GetValue(1));
}
dataReader.close();
conn.close();

在这个代码片段中,首先,我们创建了一个 SqlCommand 对象并创建了一个我们需要在数据库上运行的查询。然后这个查询被发送到 cmd 对象和连接对象 conn

为了执行查询,我们使用函数 ExecuteReader(),它返回一个 Resultset,其中包含在查询中获取的数据。这个 ResultSet 可以使用 SqlDataReader 对象读取,该对象逐行读取循环中的数据。

最后,我们需要关闭阅读器和连接对象,以便释放它们以供进一步使用。

上述代码的输出将是:

Connection Established.
Data from the Database..
BS01 || David
BS02 || John

请注意,我们使用 ExecuteReader() 函数来执行 Select 查询。要执行更多类型的查询,我们需要不同的方法。

一些流行的查询结果阅读器是:

函数名称 描述
ExecuteReader() 用于执行可以以表格形式返回数据的查询的函数。
ExecuteNonQuery() 用于在数据库中执行 DML 查询的函数,例如 insertupdate 等。
ExeuteScalar() 用于返回单个值的查询的函数,例如 count
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

相关文章 - Csharp SQL