在 C# 中选择查询数据库

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

什么是数据库

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

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

C# 中的数据库连接

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

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

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

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

在 SQL Server 中创建数据库

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

createdatabasemydb;usemydb;CREATETABLEStudent(studentIDvarchar(20)NOTNULLPRIMARYKEY,stuentNamevarchar(60)NOTNULL);insertintoStudentvalues("BS01",'David');insertintoStudentvalues("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