1. 配置信息修改,因為是Oracle,所以以前的db_host db_port 拼成了 DB_NAME ,修改文件是 ../Conf/config.php
// 示例的全局數據庫配置文件
return array(
'DB_TYPE' => 'Oracle' , // 數據庫類型
'DB_NAME' => "10.10.1.6:1521/orcl", // 數據庫名
'DB_USER' => 'hy', // 用戶名
'DB_PWD' => 'hy', // 密碼
2. 需要在選擇數據庫類型生成的工廠模式中選擇/Extend/Driver/Db/DbOracle.class.php驅動類
相關方式是在 ./ThinkPHP/Lib/Core/Db.class.php 文件中factory()
public function factory( $db_config='' ) {
// 讀取數據庫配置
$db_config = $this ->parseConfig($db_config);
if( empty($db_config ['dbms' ]))
throw_exception(L( '_NO_DB_CONFIG_'));
// 數據庫類型
$this->dbType = ucwords(strtolower($db_config ['dbms' ]));
$class = 'Db' . $this ->dbType;
if(is_file(CORE_PATH. 'Driver/Db/'.$class .'.class.php' )) {
// 內置驅動
$path = CORE_PATH;
} else{ // 擴展驅動
$path = EXTEND_PATH;
}
// 檢查驅動類
if(require_cache( $path.'Driver/Db/' .$class .'.class.php' )) {
$db = new $class($db_config );
// 獲取當前的數據庫類型
if( 'pdo' != strtolower($db_config ['dbms' ]) )
$db->dbType = strtoupper($this ->dbType);
else
$db->dbType = $this ->_getDsnType($db_config[ 'dsn']);
if(APP_DEBUG) $db->debug = true ;
} else {
// 類沒有定義
throw_exception(L( '_NOT_SUPPORT_DB_').': ' . $db_config['dbms' ]);
}
return $db;
}
3. 使用Oracle方法需注意,因為Oracle中字段大寫,還有很多 增刪改查方法與mysql不同,所以使用時還需注意
如下面函數就是死在了大寫上 ./ThinkPHP/Extend/Driver/Db/DbOracle.class.php
public function getFields( $tableName) {
$result = $this ->query("select a.column_name,data_type,decode(nullable,'Y',0,1) notnull,data_default,decode(a.column_name,b.column_name,1,0) pk "
."from user_tab_columns a,(select column_name from user_constraints c,user_cons_columns col "
."where c.constraint_name=col.constraint_name and c.constraint_type='P'and c.table_name='".strtoupper( $tableName)
. "') b where table_name='".strtoupper($tableName )."' and a.column_name=b.column_name(+)");
$info = array ();
if( $result) {
foreach ($result as $key => $val) {
$info[strtolower($val ['COLUMN_NAME' ])] = array(
'name' => strtolower($val ['COLUMN_NAME' ]),
'type' => strtolower($val ['DATA_TYPE' ]),
'notnull' => $val ['NOTNULL' ],
'default' => $val ['DATA_DEFAULT' ],
'primary' => $val ['PK' ],
'autoinc' => $val ['PK' ],
);
}
}
return $info;
}
閱讀更多 老公城獅 的文章