如何使用强类型数据集设计器来配置多个更新?

时间:2009-02-05 03:05:37

标签: sql strongly-typed-dataset

我使用强类型数据集作为ORM来包装我的Microsoft Access数据库,现在我正在寻找一种方法来创建等效的

UPDATE table1 
SET table1.nationality = 'england'
WHERE table1.nationality in (SELECT table2.nationality 
                             FROM table2
                             WHERE table2.gender ='M');

在强类型数据集设计器中,但不确定这是否可行。

如果无法做到这一点,完成此任务的最佳方法是什么?我在避免

  1. 手动编码SQL
  2. 存储过程
  3. 尽我所能。

    编辑:我并不是说手动代码SQL不允许,只是因为它不可取。存储过程也是如此。

3 个答案:

答案 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,我就是这样做的。

http://msdn.microsoft.com/en-us/library/bb386977.aspx