|
|
|
| |
ame; datamodule4.adoquery2.open; 在为tquery或tadoquery部件设置sql属性时调用close方法总是很安全的,如果tquery或tadoquery部件已经被关闭了,调用close方法时不会产生任何影响。在应用程序中为sql属性设置新的sql 命令语句时,必须要调用clear方法以清除sql属性中现存的sql命令语句,如果不调用clear方法,便调用add方法向sql属性中设置sql命令语句,那么新设置的sql命令语句会追加在现存sql命令语句后面, 在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。 在这里要特别注意的,一般情况下tquery或tadoquery部件的sql属性只能包含一条完整的sql语句,它不允许被设置成多条sql语句。当然有些数据库服务器也支持在tquery或tadoquery部件的sql属性中设置多条sql语句,只要数据库服务器允许这样,我们在编程时可以为 sql 属性设置多条sql语句。 在为tquery或tadoquery部件设置完sql属性的属性值之后,也即编写好适当的sql程序之后,可以有多种方式来执行sql程序。 在设计过程中,设置完tquery或tadoquery部件的sql属性之后将其active属性的值置为true, 这样便可以执行sql属性中的sql程序,如果应用中有与tquery或tadoquery部件相连的数据浏览部件( 如tddgrid tdbedit等)那么在这些数据浏览部件中会显示sql程序的执行结果。 在应用程序运行过程中,通过程序调用tquery或tadoquery组件的open方法或execsql 方法可以执行其sql属性中的sql程序。open方法和execsql方法是不一样的。open方法只能用来执行sql语言的查询语句(select命令), 并返回一个查询结果集,而execsql方法还可以用来执行其它常用的sql语句(如insert, update, delete等命令),例如: query1.open (这样会返回一个查询结果集) 如果调用open方法,而没有查询结果时,会出错。此时应该调用execsql 方法来代替open方法。如: query1.execsql (没有返回结果) 当然在设计应用程序时,程序设计人员是无法确定tquery或tadoquery组件中的sql 语句是否会返回一个查询结果的。对于这种情况应当用try…except模块来设计程序。在 try 部分调用open方法,而在except部分调用excesql方法,这样才能保证程序的正确运行。 例如: try query1.open except query1.execsql end 通过tquery或tadoquery组件可以获得两种类型的数据: u “活动”的数据 这种数据就跟通过ttable部件获得的数据一样,用户可以通过数据浏览部件来编辑修改这些数据,并且当调用post方法或当焦点离开当前的数据浏览部件时,用户对数据的修改自动地被写回到数据库中。 u 非活动的数据(只读数据) 用户通过数据浏览部件是不能修改其中的数据。在缺省情况下,通过tquery部件获得的查询结果数据是只读数据,要想获得“活动”的数据,在应用程序中必须要设置tquery或tadoquery组件的requestlive属性值为true,然而并不是在任何情况下(通过设置requestlive的属值true)都可以获得“活动”的数据的,要想获得“活动”的数据,除了将tquery部件的requestlive属性设置为true外,相应的sql命令还要满足以下条件。 本地sql语句查询情况下,要得到可更新的数据集,sql语句的限制为: n 查询只能涉及到一个单独的表 n sql语句中不能包含order by命令 n sql语句中不能含聚集运算符sum或avg n 在select后的字段列表中不能有计算字段 n 在select语句where部分只能包含字段值与常量的比较运算,这些比较运算符是:like, >, <, >=, <=。各比较运算之间可以有并和交运算:and和or 当通过sql语句查询数据库服务器中的数据库表: n 查询只能涉及到一个单独的表 n sql语句中不能包含order by命令 n sql语句中不能含聚集运算符sum或avg运算 另外,如果是查询sybase数据库中的表,那么被查询的表中只能有一个索引。 如果在应用程序中要求tquery或tadoquery组件返回一个“活动”的查询结果数据集,但是sql 命令语句不满足上述约束条件时,对于本地数据库的sql查询,bde只能返回只读的数据集。对于数据库服务器中的sql查询,只能返回错误的代码。当tquery或tadoquery组件返回一个“活动”的查询结果数据集时,它的canmodify属性的值会被设置成true。 §3.4 ms sql server上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |
|
|
|
|
|