我不是好明白。放在datatable里面了,不是可以在程序里面直接读取了吗

解决方案 »

  1.   

    我没有将问题描述清楚,是我将数据放到datatable后,我希望还是用类似select * from datatablename;的方法,就像操作数据库的表一样进行操作。因为,考虑到用我原来的分页,(我们没有使用datagrid)
      

  2.   

    这取决于你的视图定义和你要对视图惊醒什么样的操作。如果只是进行浏览,是没问题的。
    有关视图的更新,SQL 的帮助是这样说的:通过视图修改数据
    可以按下列方式通过视图修改数据: 使用具有支持 INSERT、UPDATE 和 DELETE 语句的逻辑的 INSTEAD OF 触发器。
    使用修改一个或多个成员表的可更新分区视图。 
    如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新:如果视图不使用 INSTEAD OF 触发器或者不是可更新分区视图,则只要符合下列条件,仍可更新: 视图在视图定义的 FROM 子句中包含至少一个表;视图不能只基于一个表达式。
    在选择列表中没有使用聚合函数(AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR、VARP)或 GROUP BY、UNION、DISTINCT 或 TOP 子句。但是,可以在 FROM 子句定义的子查询范围内使用聚合函数,前提条件是聚合函数生成的派生值没有修改过。 
    说明  使用 UNION ALL 运算符的分区视图是可更新视图。在选择列表中不使用派生列。派生列是由除简单列引用以外的一切构成的结果集列。 
    通过视图修改数据的准则
    不使用 INSTEAD OF 触发器或可更新分区视图而通过视图修改数据之前,请考虑下列准则: 如果在视图定义中使用了 WITH CHECK OPTION 子句,则所有在视图上执行的数据修改语句都必须符合定义视图的 SELECT 语句中所设定的条件。如果使用了 WITH CHECK OPTION 子句,修改行时需注意不让它们在修改完成后从视图中消失。任何可能导致行消失的修改都会被取消,并显示错误信息。
    SQL Server 必须能够明确地解析对视图所引用基表中的特定行所做的修改操作。不能在一个语句中对多个基础表使用数据修改语句。因此,列在 UPDATE 或 INSERT 语句中的列必须属于视图定义中的同一个基表。
    对于基础表中需更新而又不允许空值的所有列,它们的值在 INSERT 语句或 DEFAULT 定义中指定。这将确保基础表中所有需要值的列都可以获取值。
    在基础表的列中修改的数据必须符合对这些列的约束,如为空性、约束、DEFAULT 定义等。例如,如果要删除一行,则相关表中的所有基础 FOREIGN KEY 约束必须仍然得到满足,删除操作才能成功。
    分布式分区视图(远程视图)不能使用键集驱动游标更新。此项限制可通过在基础表上而不在视图本身上声明游标得到解决。 
    此外,如果在视图中删除数据: 在视图定义的 FROM 子句中只能列出一个表。 
    不能在视图中与text、ntext 或 image 列一起使用 READTEXT 和 WRITETEXT 语句。通过视图添加数据Transact-SQL通过视图更改数据Transact-SQL通过视图删除数据Transact-SQL