oracle4
?
創建數據庫有兩種方法:?
1).?通過oracle提供的向導工具。√?
???database?Configuration?Assistant??【數據庫配置助手】?
2).我們可以用手工步驟直接創建。
?
七:java操作oracle
java連接oracle?
?介紹:前面我們一直在plsql中操作oracle,那么如何在java?程序中操作數據庫呢??下面我們舉例說明,寫一個java,分頁顯示emp表的用戶信息。?
Java代碼?
package?com.sp;
?
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.Statement;
?
//演示??如何使用?jdbc_odbc橋連接方式
public?class?TestOracle?{
?
public?static?void?main(String[]?args)?{
try?{
?
//?1.加載驅動
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
?
//?2.得到連接
Connection?ct?=?DriverManager.getConnection(
"jdbc.odbc:testConnectOracle",?"scott",?
?
"tiger");
?
//?從下面開始,和SQL?Server一模一樣
Statement?sm?=?ct.createStatement();
ResultSet?rs?=?sm.executeQuery("select?*?from?emp");
while?(rs.next())?{
//用戶名
System.out.println("用戶名:?"+rs.getString(2));
//默認是從1開始編號的
}
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
}
在得到連接那里,要去配置數據源,點擊控制面板-->系統和安全-->管理工具-->數據源(ODBC),打開后點添加,如圖:?
可以看到,有個Oracle?in?OraDb10g_home1的驅動,它是Oracle安裝完后自動加上去的。?選中后,點完成,再填如下信息,如圖:?
??
?
這樣配好后基本就可以了,但為了安全起見,建議大家測試一下,點擊?Test?Connection按鈕,?測試通過后點ok,然后數據源就生成了,如圖:
?
然后把數據源名稱寫進jdbc.odbc:里。?
這里要注意:jdbcodbc能不能遠程連接呢?不能遠程連接,也就是你這樣寫的話就意味著java程序和oracle數據庫應該是在同一臺機器上,因為這里沒有指定IP地址,肯定默認就是本地。如果要遠程連,就用jdbc,jdbc是可以遠程連的。?
運行TestOracle.java,控制臺輸出.......................?
可惜我沒運行成功,說?
java.sql.SQLException:?No?suitable?driver?found?for?jdbc.odbc:testConnectOracle?
at?java.sql.DriverManager.getConnection(Unknown?Source)?
at?java.sql.DriverManager.getConnection(Unknown?Source)?
at?com.sp.TestOracle.main(TestOracle.java:18)?
不知道為什么。。。?
接下來講解用JDBC的方式連接Oracle?
Java代碼?
package?com.sp;
?
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.Statement;
?
//使用?jdbc連接oracle
public?class?TestOracle2?{
?
public?static?void?main(String[]?args)?{
try?{
?
//?1.加載驅動
Class.forName("oracle.jdbc.driver.OracleDriver");
?
//?2.得到連接
Connection?ct?=?DriverManager.getConnection
?
("jdbc:oracle:thin:@127.0.0.1:1521:orcl",?"scott",?"tiger");
?
//?從下面開始,和SQL?Server一模一樣
Statement?sm?=?ct.createStatement();
ResultSet?rs?=?sm.executeQuery("select?*?from?emp");
while?(rs.next())?{
//用戶名
System.out.println("用戶名:?"+rs.getString(2));
//默認是從1開始編號的
}
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
}
記得要把驅動包引入,classes12.jar?
運行,。。。。?再次可惜,我還是沒運行成功,錯誤是:?
java.sql.SQLException:?Io?異常:?The?Network?Adapter?could?not?establish?the?
connection?
at?oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)?
at?oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)?
at?oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)?
at?oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:418)?
at?oracle.jdbc.driver.OracleDriver.getConnectionInstance?
(OracleDriver.java:521)?
at?oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:325)?
at?java.sql.DriverManager.getConnection(Unknown?Source)?
at?java.sql.DriverManager.getConnection(Unknown?Source)?
at?com.sp.TestOracle2.main(TestOracle2.java:18)?
我也不知道為什么。。。?幽怨了。。?
接下來建個web?project,來測試oracle的分頁,挺麻煩,不記錄了。。?
在oracle中操作數據?-?使用特定格式插入日期值?
?使用?to_date函數n?
請大家思考:?如何插入列帶有日期的表,并按照年-月-日的格式插入??
insert?into?emp?values??(9998,??'xiaohong',??'MANAGER',??7782,??to_date('1988-12-?
12',?'yyyy-mm-dd'),??78.9,??55.33,??10);?
注意:?
insert?into?emp?values??(9998,??'xiaohong',??'MANAGER',??7782,??'12-12月-1988',?
78.9,??55.33,??10);?
這句語句是可以成功運行的?
使用子查詢插入數據?
?介紹n?
當使用valus子句時,一次只能插入一行數據,當使用子查詢插入數據時,一條inset語句可以插?
入大量的數據。當處理行遷移或者裝載外部表的數據到數據庫時,可以使用子查詢來插入數據。?
把emp表中10號部門的數據導入到新表中?
create?table?kkk(myId?number(4),?myName?varchar2(50),?myDept?number(5));?
update?emp?set?job=(select?job?from?emp?where?ename='SMITH')?where?ename='SCOTT';?
update?emp?set?sal=(select?sal from?emp?where?ename='SMITH')?where?ename='SCOTT';?
insert?into?kkk?(myId,?myName,?myDept)??select?empno,?ename,?deptno?from?emp?where?
deptno?=?10;?
?介紹n?
使用update語句更新數據時,既可以使用表達式或者數值直接修改數據,也可以使用子查詢修改?
數據。?
問題:希望員工SCOTT的崗位、工資、補助與SMITH員工一樣。?
update?emp?set(job,?sal,?comm)=(select?job,?sal,?comm?from?emp?where?ename='SMITH')?where?ename='SCOTT';
?
總結
- 上一篇: Unix时间戳转换(python)
- 下一篇: 关于Python多线程的理解