我是 C# 的新手,我对如何使用单个 sql 字符串从多个表中检索数据(实际上是其中 3 个)有点一无所知。
基本上有 2 个主文件:
- Task_Information, Emp_Information
和 1 个事务文件:
- 赋值:这个由 2 个主文件和其他一些字段的主键更新。
没关系。但是现在我需要运行一个命令,该命令将根据用户输入的搜索参数从所有 3 个表中检索数据,并在所有表中显示所选字段。在MS Access中,我所要做的就是进行查询 - 这是生成的SQL:
SELECT Assignments.Task_No, Assignments.Assignment_No, Assignments.Assignment_Date,
Task_Information.Client_Name, Emp_Information.F_Name, Emp_Information.L_Name
FROM Emp_Information
INNER JOIN (Task_Information
INNER JOIN Assignments ON Task_Information.Task_No = Assignments.Task_No)
ON Emp_Information.Emp_ID = Assignments.Assignee
WHERE (((Assignments.Assignment_Date)="this is just some date the user has to enter..."))
简而言之,我需要了解如何在 C# 程序中使用相同的 sql 字符串,其中用户键入搜索参数并单击按钮。 顺便说一句,它必须使用OledbDataReader/适配器来完成;
尝试以下查询:
SELECT Assignments.Task_No, Assignments.Assignment_No, Assignments.Assignment_Date,
Task_Information.Client_Name, Emp_Information.F_Name, Emp_Information.L_Name
FROM Emp_Information
INNER JOIN Task_Information
ON Task_Information.Task_No = Assignments.Task_No
INNER JOIN Assignments
ON Emp_Information.Emp_ID = Assignments.Assignee
WHERE (((Assignments.Assignment_Date) like "%this is just some date the user has to enter...%"))
如果你使用SQL Server,你可以使用SqlCommand
。有了这个,您可以将字符串"this is..."
替换为参数占位符 @date
,然后可以像 MSDN 上显示的那样进行设置。
这里的主要问题是OleDbDataReader
的使用以及它是否支持这种查询。但是在阅读了 MSDN OleDbCommand.Parameters
它应该可以工作。