我使用强类型数据集作为ORM来包装我的Microsoft Access数据库,现在我正在寻找一种方法来创建等效的
UPDATE table1
SET table1.nationality = 'england'
WHERE table1.nationality in (SELECT table2.nationality
FROM table2
WHERE table2.gender ='M');
在强类型数据集设计器中,但不确定这是否可行。
如果无法做到这一点,完成此任务的最佳方法是什么?我在避免
尽我所能。
编辑:我并不是说手动代码SQL不允许,只是因为它不可取。存储过程也是如此。
答案 0 :(得分:2)
像史蒂文A低说..但你使用MS access ..所以params必须是'?'
右键单击适配器并选择Add Query,选择新的Select / Update / SQL语句,然后输入
UPDATE table1 SET
table1.nationality = ?
WHERE table1.nationality in (
select table2.nationality
from table2
where table2.gender = ?
)
给它一个合适的名字,即。 updateNationalityByGender
updateNationalityByGender(string nationality, string gender)
答案 1 :(得分:0)
您使用的是表适配器吗?
如果是这样,你不能只是右键单击并选择Add Query,选择新的Select / Update / SQL语句,然后输入
UPDATE table1 SET
table1.nationality = @nationality
WHERE table1.nationality in (
select table2.nationality
from table2
where table2.gender = @gender
)
并给它一个合适的名字?这应该生成像
这样的表适配器方法updateNationalityByGender(string nationality, string gender)
您需要使用表适配器的命名空间来访问它,例如
using your.name.space.datasetname.datasetnametableadapter;
答案 2 :(得分:0)
LINQ to DataSet 将是您的最佳选择。
1)它的所有强类型。
2)您可以使用IQueryable / LINQ / lambda进行查询
3)您可以绑定到Access数据库
Sql Express是免费的,使用它会好得多。但如果我被迫使用Access,我就是这样做的。