summaryrefslogtreecommitdiff
path: root/framework/Data/SqlMap
diff options
context:
space:
mode:
authorwei <>2007-05-08 07:49:50 +0000
committerwei <>2007-05-08 07:49:50 +0000
commit3392e51b4edf84682b66ce9e32d00c1adb3205bb (patch)
treec8263f0d8e6d7b4d28cf69ce48d6beea37b96ed9 /framework/Data/SqlMap
parent84863ce89a1a712aa00df5c33227cecafded881a (diff)
Fixed sqlmap query with limit and offsets.
Diffstat (limited to 'framework/Data/SqlMap')
-rw-r--r--framework/Data/SqlMap/Configuration/TSqlMapStatement.php24
-rw-r--r--framework/Data/SqlMap/Statements/TMappedStatement.php6
-rw-r--r--framework/Data/SqlMap/Statements/TPreparedCommand.php12
3 files changed, 26 insertions, 16 deletions
diff --git a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
index 5d2640e9..f5c43594 100644
--- a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
+++ b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
@@ -311,18 +311,6 @@ class TSqlMapSelect extends TSqlMapStatement
}
/**
- * TSqlMapDelete class corresponds to the <delete> element.
- *
- * @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id$
- * @package System.Data.SqlMap.Configuration
- * @since 3.1
- */
-class TSqlMapDelete extends TSqlMapUpdate
-{
-}
-
-/**
* TSqlMapInsert class corresponds to the <insert> element.
*
* The <insert> element allows <selectKey> child elements that can be used
@@ -367,6 +355,18 @@ class TSqlMapUpdate extends TSqlMapStatement
}
/**
+ * TSqlMapDelete class corresponds to the <delete> element.
+ *
+ * @author Wei Zhuo <weizho[at]gmail[dot]com>
+ * @version $Id$
+ * @package System.Data.SqlMap.Configuration
+ * @since 3.1
+ */
+class TSqlMapDelete extends TSqlMapUpdate
+{
+}
+
+/**
* TSqlMapSelect corresponds to the <selectKey> element.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
diff --git a/framework/Data/SqlMap/Statements/TMappedStatement.php b/framework/Data/SqlMap/Statements/TMappedStatement.php
index e56e73ce..db02857f 100644
--- a/framework/Data/SqlMap/Statements/TMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TMappedStatement.php
@@ -203,7 +203,7 @@ class TMappedStatement extends TComponent implements IMappedStatement
*/
public function executeQueryForList($connection, $parameter, $result=null, $skip=-1, $max=-1, $delegate=null)
{
- $sql = $this->_command->create($this->_manager, $connection, $this->_statement, $parameter);
+ $sql = $this->_command->create($this->_manager, $connection, $this->_statement, $parameter,$skip,$max);
return $this->runQueryForList($connection, $parameter, $sql, $result, $skip, $max, $delegate);
}
@@ -228,7 +228,9 @@ class TMappedStatement extends TComponent implements IMappedStatement
$registry=$this->getManager()->getTypeHandlers();
$list = $result instanceof ArrayAccess ? $result :
$this->_statement->createInstanceOfListClass($registry);
- $reader = $this->executeSQLQueryLimit($connection, $sql, $max, $skip);
+ $connection->setActive(true);
+ $reader = $sql->query();
+ //$reader = $this->executeSQLQueryLimit($connection, $sql, $max, $skip);
if(!is_null($delegate))
{
foreach($reader as $row)
diff --git a/framework/Data/SqlMap/Statements/TPreparedCommand.php b/framework/Data/SqlMap/Statements/TPreparedCommand.php
index 7bb68c79..ff5fd6ff 100644
--- a/framework/Data/SqlMap/Statements/TPreparedCommand.php
+++ b/framework/Data/SqlMap/Statements/TPreparedCommand.php
@@ -10,6 +10,8 @@
* @package System.Data.SqlMap.Statements
*/
+Prado::using('System.Data.Common.TDbMetaData');
+
/**
* TPreparedCommand class.
*
@@ -20,11 +22,17 @@
*/
class TPreparedCommand
{
- public function create(TSqlMapManager $manager, $connection, $statement, $parameterObject)
+ public function create(TSqlMapManager $manager, $connection, $statement, $parameterObject,$skip=null,$max=null)
{
$prepared = $statement->getSQLText()->getPreparedStatement($parameterObject);
$connection->setActive(true);
- $command = $connection->createCommand($prepared->getPreparedSql());
+ $sql = $prepared->getPreparedSql();
+ if($max!==null || $skip!==null)
+ {
+ $builder = TDbMetaData::getInstance($connection)->createCommandBuilder();
+ $sql = $builder->applyLimitOffset($sql,$max,$skip);
+ }
+ $command = $connection->createCommand($sql);
$this->applyParameterMap($manager, $command, $prepared, $statement, $parameterObject);
return $command;
}