以系統(tǒng)為windowns為例,
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供申扎網(wǎng)站建設(shè)、申扎做網(wǎng)站、申扎網(wǎng)站設(shè)計、申扎網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、申扎企業(yè)網(wǎng)站模板建站服務(wù),十余年申扎做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、先PHP.INI中的oracle擴展也開啟了
PHP下php.ini(注意,有時是在windows目錄)修改下下
其中的
extension=php_oci8.dll 去掉前面的“;”號
extension=php_oracle.dll 去掉前面的“;”號
把php_oci8.dll 、和php_oracle.dll 文件復(fù)制到windwos的system32下
2、系統(tǒng)中應(yīng)當有安裝ORCALE的系統(tǒng),然后配制遠程ORACLE的的監(jiān)聽。就是你能用你配好的ORACLE系統(tǒng)訪問遠程的數(shù)據(jù)庫。
{例:
在ORACLE安裝目錄下找到tnsnames.ora,然后按下面的例子配置一下
BASETEST 命名=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX服務(wù)器IP地址)(PORT = 1521端口))
)
(CONNECT_DATA = (SERVICE_NAME = masprod 實例ID))
)
}
3.在你的PHP網(wǎng)頁目錄下寫個測試連接的程序試試
?php
$dbconn=OCILogon("username","pwd","(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = [遠程服務(wù)器IP])(PORT = 1515))
)
(CONNECT_DATA =
(SERVICE_NAME = [數(shù)據(jù)庫名字])
))");
if($dbconn!=false)
{
echo "連接成功";
if(OCILogOff($dbconn)==true)
{
echo "關(guān)閉連接成功!";//=這里有問題
}
}
else
{
echo "連接失敗";
}
?
在利用ado連接數(shù)據(jù)庫之前,需要做一些準備
1.用#import指令引入ADO類型庫
我們在stdafx.h中加入如下語句:
#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("EOF","adoEOF") 。
這一語句有何作用呢?其最終作用同我們熟悉的#i nclude類似,編譯的時候系統(tǒng)會為我們生成msado15.tlh,ado15.tli兩個C++頭文件來定義ADO庫。
幾點說明:
(1) 您的環(huán)境中msado15.dll不一定在這個目錄下,請按實際情況修改
(2) 在編譯的時候肯能會出現(xiàn)如下警告,對此微軟在MSDN中作了說明,并建議我們不要理會這個警告。msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
2、初始化OLE/COM庫環(huán)境
必須注意的是,ADO庫是一組COM動態(tài)庫,這意味應(yīng)用程序在調(diào)用ADO前,必須初始化OLE/COM庫環(huán)境。在MFC應(yīng)用程序里,一個比較好的方法是在應(yīng)用程序主類的InitInstance成員函數(shù)里初始化OLE/COM庫環(huán)境。
BOOL CMyAdoTestApp::InitInstance()
{
if(!AfxOleInit())//這就是初始化COM庫
{
AfxMessageBox(“OLE初始化出錯!”);
return FALSE;
}
}
3.ADO庫包含三個基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。與數(shù)據(jù)庫的連接就是用_ConnectionPtr接口,它的連接字符串可以是自己直接寫,也可以指向一個ODBC DSN。以下的例子都測試通過,順便寫了SQL Server的例子。
BOOL CTestconDlg::ConnectDatabase()
{
CString m_server,m_data,m_uid,m_pwd;
m_server="192.168.0.24";//服務(wù)器ip或名稱
m_data="crmdb";//ODBC數(shù)據(jù)源
m_uid="njcrm";//用戶名
m_pwd="crmdbo";//密碼
BOOL retFt=false;
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///創(chuàng)建Connection對象
if(SUCCEEDED(hr))
{
_bstr_t connStr;
m_pConnection-CursorLocation=adUseClient;
//begin---------------Oracle ODBC 配置數(shù)據(jù)源-------------------------------------
//控制面板-管理工具-數(shù)據(jù)源(ODBC)-系統(tǒng)DNS-添加-Microsoft ODBC for Oracle-完成-配置……
// connStr="DSN="+m_data;
// m_pConnection-Open(_bstr_t(connStr),(_bstr_t)m_uid,(_bstr_t)m_pwd,adConnectUnspecified);
//end---------------Oracle ODBC 配置數(shù)據(jù)源---------------------------------------
//begin---------------Oracle 標準安全級別---------------------------------------
// connStr="Provider=OraOLEDB.Oracle;User ID=njcrm;Password=crmdbo;Data Source=192.168.0.24;";
// m_pConnection-Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified);
//end---------------Oracle 標準安全級別---------------------------------------
//begin---------------Oracle 微軟格式----------------------------------
============ORACLE 8i============================
Class.forName ("oracle.jdbc.driver.OracleDriver");
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@myhost:1521:orcl",
"scott", "tiger");
=============MySQL=================================
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://myhost:3306/dbname","user","passwd");
============InfoMax================================
Class.forName("com.informix.jdbc.IfxDriver");
conn = DriverManager.getConnection("jdbc:informix-sqli://myhost:1533:informixserver=myserver;user=rdtest;password=test");
============InforMix================================
Class.forName("com.informix.jdbc.IfxDriver");
conn = DriverManager.getConnection("jdbc:informix-sqli://myhost:1533:informixserver=myserver;user=rdtest;password=test");
=============SQLServer2000=========================
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection
("jdbc:microsoft:sqlserver://server1:1433","username","password");
///////////////////////////////////
jdbc driver download:
SQLServer:
MySQL:
Oracle:
---------------------DB2--------------------
--------------------- --------------------
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();//For Application
String url = "jdbc:db2:sample";
con = DriverManager.getConnection(url, userid, passwd);
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();//For Applet
String url = "jdbc:db2:// "+server+":"+port+"/sample";
con = DriverManager.getConnection(url, userid, password );
補充oracle的連接方法:
DriverManager.registerDriver (new OracleDriver());
Connection conn73 = DriverManager.getConnection
("jdbc:oracle:oci8:@ora8idev","scott","tiger");
具體的代碼如下:
/// summary
/// Oracle 的數(shù)據(jù)庫連接字符串.
/// /summary
private const String connString =
@"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.210)
(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User
Id=TEST;Password=TEST123";
192.168.1.210 是 Oracle?數(shù)據(jù)庫服務(wù)器的 IP 地址
1521 是 默認的端口號
SERVICE_NAME=ORCL 意思是Oracle 數(shù)據(jù)庫服務(wù)是ORCL
后面就是用戶名密碼了。
擴展資料:
部分描述:
abstract:可以和類、方法、屬性、索引器及事件一起使用,標識一個可以擴展但不能被實體化的、必須被實現(xiàn)的類或方法。
as:一個轉(zhuǎn)換操作符,如果轉(zhuǎn)換失敗,就返回null。
base:用于訪問被派生類或構(gòu)造中的同名成員隱藏的基類成員。
catch:定義一個代碼塊,在特定類型異常拋出時,執(zhí)行塊內(nèi)代碼。
checked:既是操作符又是語句,確保編譯器運行時,檢查整數(shù)類型操作或轉(zhuǎn)換時出現(xiàn)的溢出。
const:標識一個可在編譯時計算出來的變量值,即一經(jīng)指派不可修改的值。
delegate:指定一個聲明為一種委托類型。委托把方法封裝為可調(diào)用實體,能在委托實體中調(diào)用。
enum:表示一個已命名常量群集的值類型。
event:允許一個類或?qū)ο筇峁┩ㄖ某蓡T,他必須是委托類型。
explicit:一個定義用戶自定義轉(zhuǎn)換操作符的操作符,通常用來將內(nèi)建類型轉(zhuǎn)換為用戶定義類型或反向操作,必須再轉(zhuǎn)換時調(diào)用顯示轉(zhuǎn)換操作符。
extern:標識一個將在外部(通常不是c#語言)實現(xiàn)的方法。
參考資料來源:百度百科-c#
public void testOracle()
{
Connection con = null;// 創(chuàng)建一個數(shù)據(jù)庫連接
PreparedStatement pre = null;// 創(chuàng)建預(yù)編譯語句對象,一般都是用這個而不用Statement
ResultSet result = null;// 創(chuàng)建一個結(jié)果集對象
try
{
? ?Class.forName("oracle.jdbc.driver.OracleDriver");// 加載Oracle驅(qū)動程序
? ?System.out.println("開始嘗試連接數(shù)據(jù)庫!");
? ?String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:XE";// 127.0.0.1是本機地址,XE是精簡版Oracle的默認數(shù)據(jù)庫名
? ?String user = "system";// 用戶名,系統(tǒng)默認的賬戶名
? ?String password = "147";// 你安裝時選設(shè)置的密碼
? ?con = DriverManager.getConnection(url, user, password);// 獲取連接
? ?System.out.println("連接成功!");
? ?String sql = "select * from student where name=?";// 預(yù)編譯語句,“?”代表參數(shù)
? ?pre = con.prepareStatement(sql);// 實例化預(yù)編譯語句
? ?pre.setString(1, "劉顯安");// 設(shè)置參數(shù),前面的1表示參數(shù)的索引,而不是表中列名的索引
? ?result = pre.executeQuery();// 執(zhí)行查詢,注意括號中不需要再加參數(shù)
? ?while (result.next())
? ? ? ?// 當結(jié)果集不為空時
? ? ? ?System.out.println("學(xué)號:" + result.getInt("id") + "姓名:"
? ? ? ? ? ? ? ?+ result.getString("name"));
}
catch (Exception e)
{
? ?e.printStackTrace();
}
finally
{
? ?try
? ?{
? ? ? ?// 逐一將上面的幾個對象關(guān)閉,因為不關(guān)閉的話會影響性能、并且占用資源
? ? ? ?// 注意關(guān)閉的順序,最后使用的最先關(guān)閉
? ? ? ?if (result != null)
? ? ? ? ? ?result.close();
? ? ? ?if (pre != null)
? ? ? ? ? ?pre.close();
? ? ? ?if (con != null)
? ? ? ? ? ?con.close();
? ? ? ?System.out.println("數(shù)據(jù)庫連接已關(guān)閉!");
? ?}
? ?catch (Exception e)
? ?{
? ? ? ?e.printStackTrace();
? ?}
}
}
外連接 : 使用外連接可以查存不滿足條件的數(shù)據(jù) 符號(+) SQL select e.ename,e.sal,d.dname,d.loc from emp e,dept d 2 where e.deptno=d.deptno(+); 自連接: SQL select w.ename||' work for '||m.job from emp w,emp m 2 where w.empno=m.empno;