如何在使用 Access 数据库时将 VB6 Recordset.FindFirst 转换为 C#

本文关键字:Recordset VB6 FindFirst 转换 数据库 Access | 更新日期: 2023-09-27 18:33:35

我正在做一个项目,我正在将一个旧的VB6项目转换为.NET/C#。 我遇到了一个执行多个查询的方法,其中一次使用记录集。查找第一个方法生成子结果。 我不知道如何在不使用 LINQ 的情况下将其转换为 C#(反正我没有经验)。 我已经搜索了谷歌等,找不到不使用 LINQ 的相关示例。 任何人都可以为我提供一个简单的 C# 示例,该示例执行查询,然后在不使用 LINQ 的情况下针对这些结果执行子句?

在我的代码中,我使用OldDbConnectionOleDbReader从 Access 数据库查询表。 也许这是错误的?

提前感谢您提供的任何示例。

如何在使用 Access 数据库时将 VB6 Recordset.FindFirst 转换为 C#

一种方法是将初始查询结果加载到DataTable中,然后使用 .Select 方法针对初始结果运行辅助查询。例如,对于 Access 中名为 [用户] 的表,包含...

ID  UserName
--  --------
1   Jeff
2   Greg
3   Garth
4   Gord
5   Gary
6   Grant
7   Graham

。以下 C# 代码...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
namespace oledbTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var conn = new OleDbConnection())
            {
                conn.ConnectionString =
                        @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                        @"Data Source=C:'__tmp'testData.accdb;";
                conn.Open();
                using (var cmd = new OleDbCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText =
                        "SELECT * FROM Users WHERE ID < 7 ORDER BY UserName";
                    var da = new OleDbDataAdapter(cmd);
                    var dt = new System.Data.DataTable();
                    da.Fill(dt);
                    Console.WriteLine("The initial query from the Access database (WHERE ID < 7) returned:");
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        Console.WriteLine(dr["UserName"]);
                    }
                    System.Data.DataRow[] subsetRows;
                    subsetRows = dt.Select("UserName LIKE 'Gr%'");
                    Console.WriteLine();
                    Console.WriteLine("The equivalent of '".FindFirst UserName LIKE 'Gr%''" on that subset would be:");
                    Console.WriteLine(subsetRows[0]["UserName"]);
                }
                conn.Close();
            }
        }
    }
}

。生成以下结果:

The initial query from the Access database (WHERE ID < 7) returned:
Garth
Gary
Gord
Grant
Greg
Jeff
The equivalent of ".FindFirst UserName LIKE 'Gr%'" on that subset would be:
Grant