如何在使用 Access 数据库时将 VB6 Recordset.FindFirst 转换为 C#
本文关键字:Recordset VB6 FindFirst 转换 数据库 Access | 更新日期: 2023-09-27 18:33:35
我正在做一个项目,我正在将一个旧的VB6项目转换为.NET/C#。 我遇到了一个执行多个查询的方法,其中一次使用记录集。查找第一个方法生成子结果。 我不知道如何在不使用 LINQ 的情况下将其转换为 C#(反正我没有经验)。 我已经搜索了谷歌等,找不到不使用 LINQ 的相关示例。 任何人都可以为我提供一个简单的 C# 示例,该示例执行查询,然后在不使用 LINQ 的情况下针对这些结果执行子句?
在我的代码中,我使用OldDbConnection
和OleDbReader
从 Access 数据库查询表。 也许这是错误的?
提前感谢您提供的任何示例。
一种方法是将初始查询结果加载到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