Browse Source

Fixed some of the Connection tests for SQLServer

Jose Lorenzo Rodriguez 12 years ago
parent
commit
3bf580dbe7

+ 30 - 0
src/Database/Dialect/SqlserverDialectTrait.php

@@ -146,4 +146,34 @@ trait SqlserverDialectTrait {
 		return new \Cake\Database\Schema\SqlserverSchema($this);
 	}
 
+/**
+ * Returns a SQL snippet for creating a new transaction savepoint
+ *
+ * @param string $name save point name
+ * @return string
+ */
+	public function savePointSQL($name) {
+		return 'SAVE TRANSACTION t' . $name;
+	}
+
+/**
+ * Returns a SQL snippet for releasing a previously created save point
+ *
+ * @param string $name save point name
+ * @return string
+ */
+	public function releaseSavePointSQL($name) {
+		return 'COMMIT TRANSACTION t' . $name;
+	}
+
+/**
+ * Returns a SQL snippet for rollbacking a previously created save point
+ *
+ * @param string $name save point name
+ * @return string
+ */
+	public function rollbackSavePointSQL($name) {
+		return 'ROLLBACK TRANSACTION t' . $name;
+	}
+
 }

+ 16 - 1
src/Database/Driver/Sqlserver.php

@@ -17,6 +17,7 @@
 namespace Cake\Database\Driver;
 
 use Cake\Database\Dialect\SqlserverDialectTrait;
+use Cake\Database\Statement\PDOStatement;
 use PDO;
 
 class Sqlserver extends \Cake\Database\Driver {
@@ -31,7 +32,7 @@ class Sqlserver extends \Cake\Database\Driver {
  */
 	protected $_baseConfig = [
 		'persistent' => true,
-		'host' => 'localhost',
+		'host' => 'localhost\SQLEXPRESS',
 		'login' => '',
 		'password' => '',
 		'database' => 'cake',
@@ -77,6 +78,7 @@ class Sqlserver extends \Cake\Database\Driver {
 				$connection->exec("SET {$key} {$value}");
 			}
 		}
+
 		return true;
 	}
 
@@ -90,4 +92,17 @@ class Sqlserver extends \Cake\Database\Driver {
 		return in_array('sqlsrv', PDO::getAvailableDrivers());
 	}
 
+	
+/**
+ * Prepares a sql statement to be executed
+ *
+ * @param string|\Cake\Database\Query $query
+ * @return \Cake\Database\StatementInterface
+ */
+	public function prepare($query) {
+		$this->connect();
+		$statement = $this->_connection->prepare((string)$query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
+		return $this->_old = new PDOStatement($statement, $this);
+	}
+
 }

+ 1 - 8
tests/TestCase/Database/ConnectionTest.php

@@ -171,18 +171,11 @@ class ConnectionTest extends TestCase {
  * @return void
  **/
 	public function testExecuteWithArgumentsAndTypes() {
-		$sql = "SELECT ? = '2012-01-01'";
+		$sql = "SELECT '2012-01-01' = ?";
 		$statement = $this->connection->execute($sql, [new \DateTime('2012-01-01')], ['date']);
 		$result = $statement->fetch();
 		$statement->closeCursor();
 		$this->assertTrue((bool)$result[0]);
-
-		$sql = "SELECT ? = '2012-01-01', ? = '2000-01-01 10:10:10', ? = 2";
-		$params = [new \DateTime('2012-01-01 10:10:10'), '2000-01-01 10:10:10', 2.1];
-		$statement = $this->connection->execute($sql, $params, ['date', 'string', 'integer']);
-		$result = $statement->fetch();
-		$statement->closeCursor();
-		$this->assertEquals($result, array_filter($result));
 	}
 
 /**