当前位置:Linux教程 - Oracle - 在Linux机器上安装运行Oracle(二)

在Linux机器上安装运行Oracle(二)

您就可以自己看看结果如何了:

程序1:

/*
Applet that reads in several rows from a remote Oracle database and presents them in a listbox.
*/
import java.sql.*;
import java.awt.*;
import java.applet.*;
import java.lang.*;
public class JDBCTest extends Applet
{
file://Single-select ListBox
private List employee_list = new List(5, false)
public void init()
{
setLayout(new BorderLayout());
try {
file://Set up the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
file://Connect to an Oracle database on machine sforza, using username
file://""scott"" and password ""tiger""
Connection DB_conn = DriverManager.getConnection
(""jdbc:oracle:thin:@sforza:1521:ORCL"", ""scott"", ""tiger"");
file://Connection DB_conn = DriverManager.getConnection
(""jdbc:oracle:thin:scott/tiger@sforza:1521:ORCL"");
file://Create a JDBC statement object
Statement statement_obj = DB_conn.createStatement();
file://Execute a query to get the employee names from the test DB
ResultSet results = statement_obj.executeQuery (""select ENAME from EMP"");
file://Populate the list box with all the employee names
while (results.next ()){
employee_list.add(results.getString(1));
}
} catch (SQLException e) {
throw new RuntimeException(""SQL Exception "" + e.getMessage());
}
add(employee_list);
}
}
程序2:

Oracle JDBC driver test

  程序1的大部分都是与具体数据库无关的JDBC调用,依样画葫芦您也可以访问PostgresQL,主要和Oracle相关的部分是:

Connection DB_conn = DriverManager.getConnection
(""jdbc:oracle:thin:@sforza:1521:ORCL"", ""scott"", ""tiger"");

  注意 Oracle thin JDBC driver中URI的格式:

jdbc:oracle:thin:@::
  如果您想在URI中包括用户名和口令的话:

jdbc:oracle:thin:username/password@::


  同样的URI还有一个较长的格式:

""jdbc:oracle:thin:@(description=(address=(host= _IP>)(protocol
=tcp)(port=))(connect_data=(sid=)))""

  注意ORCL是系统安装的缺省SID(System Identifier,系统标识符)。如果您在安装时使用了其他的SID,在URI里也用那个SID。$ORACLE_HOME/network/admin/tnsnames.ora包括了Oracle服务器的端口和SID设置。这是TNS Listener,Oracle网络连接进程的配置文件。如果您无法通过网络连接数据库的话,首先应该检查端口号和SID是否正确,TNS listner是否正常(译注:lsnrctl status,或者tnsping)。JDBC并不是开发SQL数据库应用的唯一手段,ANSI标准SQLJ允许在JAVA程序中直接嵌入SQL语句。Oracle for Linux 8.0.5并没有捆绑SQLJ,但可以作为另一个独立产品获得。SQLJ是100%的JAVA,应该在Linux上运行没有问题,事实上SQLJ在底层使用的就是JDBC,因此可以同任何SQL数据库互联,并不限于Oracle。

  希望上面的这些例子能对您的编程有所帮助。可惜Oracle for Linux 的编程文档相当的少,要不就是隐藏得十分深:) 也许在数据库编程得心应手之前,您得先啃它一两本书。
PL/SQL

  对SQL的过程性语言扩展(PL/SQL)可能是Oracle最著名的特点。这种强大的专业数据库管理语言允许您对声明性的SQL加逻辑控制。

  一般,PL/SQL的存储过程(stored procedure)用命令行的sqlplus,图形化的Developer/2000(Linux上目前还没有)或其他工具开发,允许您从Oracle众多的查询接口(Oracle Application Server, Python, Perl,JDBC 或者C)访问。

程序3:

create or replace package stored_sample as
function get_annual_salary (emp_number in number) return number;
end stored_sample;
/
create or replace package body stored_sample as
function get_annual_salary (emp_number in number) return number
is
annual_salary number;
monthly_salary number;
begin
select sal into monthly_salary from emp where empno = emp_number;
annual_salary := monthly_salary * 24;
return (annual_salary);
end get_annual_salary;
end stored_sample;
/

  上面的程序3是存储进程的一个小示范,它接受一个员工号,返回该员工的年薪。相关的函数get_annual_salary封装在PL/SQL包sample_package中。