WEB开发网
开发学院数据库MSSQL Server 用SQLJ开发数据库 阅读

用SQLJ开发数据库

 2007-11-11 04:17:57 来源:WEB开发网   
核心提示: ·数据库人员面试:sql server(WINDOWS平台上强大的数据库平台)常用测试·Oracle(大型网站数据库平台)数据库客户端的安装和配置·PHP连接数据库的方法(3)·Oracle(大型网站数据库平台)数据库网络的安装和配置(1)·用js
    ·数据库人员面试:sql server(WINDOWS平台上强大的数据库平台)常用测试
    ·Oracle(大型网站数据库平台)数据库客户端的安装和配置
    ·PHP连接数据库的方法(3)
    ·Oracle(大型网站数据库平台)数据库网络的安装和配置(1)
    ·用jsp(SUN企业级应用的首选)从数据库中读取图片并显示在网页
    ·[冷枫推荐]:数据库操作,内外联查询
    ·PHP中使用类对数据库进行操作
    ·图解MySQL(和PHP搭配之最佳组合)数据库的安装和操作 (1)
    ·InterBase 数据库函数库
    ·利用外部命令Oralce数据库导入导出
可执行语句

  可执行的SQLJ语句在一对大括号内包含了静态的SQL操作。有两种可能的可执行语句,由SQL是否回来一个值来决定。下面是一个不返回值的嵌入式SQL语句的例子;它在Emp表的Ename列和Sal列上创建一个复合索引∶

#sql { create index EMP_ENAME_SAL on Emp(Ename, Sal) };

如果一个嵌入式SQL语句返回值的话,你需要使用一个主机变量来指定结果应该放在什么地方。在本例子中,调用PL/SQL函数getSalary返回雇员号Empno为7900的雇员的工资。你可以使用VALUES或者SET运算符来调用函数;也就是说,

int salary;
int empNo = 7900;
#sql salary = { VALUES getSalary(:empNo} };
or
#sql { SET :salary = getSalary(:empNo) };

主机表达式

  在上面的例子中,我们可以看到,主机变量允许SQLJ程序在数据库和Java程序之间交换信息。它们是任何在Java程序中声明的变量。主机变量被嵌入到SQLJ语句里,称作主机表达式。主机表达式把主机变量绑定在SQLJ可执行语句上,它们也可能包括Java数组元素,对象属性或者Java函数。SQLJ负责在SQL和Java环境之间来回移动数据。所有的标准JDBC类型-象Boolean,byte,short,int,String,byte [],double,float,java.sql.Date等等。—都是SQLJ中有效的主机表达式。此外,Oracle(大型网站数据库平台)的SQLJ翻译器支持使用Oracle(大型网站数据库平台)数据库类型,例如ROWID,CLOB,BLOB和Object以及REF类型。在本文中,我讨论了编写实际的SQLJ代码所必需用到的SQLJ对象类型:连接上下文,命名和位置迭代程序,可执行语句和主机表达式。在以后的文章里,我想编写一个服务器端SQLJ程序,编译它,然后把它配置进Oracle(大型网站数据库平台) JServer并把它PL/SQL对应的程序进行性能上的比较。

代码段1
public static void listEmployees(String empSalary)
throws SQLException {
EmpIteratorClass empIterator;
Integer salary = new Integer(empSalary);
try {
#sql empIterator = {
select Ename, Job, HireDate
from Emp
where Sal > :salary
};
while (empIterator.next()) {
System.out.println("Name: " + empIterator.Ename());
System.out.println("Job: " + empIterator.Job());
System.out.println("Hire Date:" +
empIterator.HireDate().toString());
}
empIterator.close();
} catch (SQLException e) {
System.err.println("SQLException" + e);
System.exit(1);
}
}
代码段2
public static void listEmployees(String empSalary)
throws SQLException {
EmpIteratorClass empIterator;
Integer salary = new Integer(empSalary);
/*主机变量 */
String name = null;
String job = null;
Timestamp hireDate = null;
try {
#sql empIterator = {
select Ename, Job, HireDate
from Emp
where Sal > :salary
};
while (true) {
#sql { FETCH :empIterator INTO :name, :job, :hireDate };
if (empIterator.endFetch()) {
break;
}


System.out.println("Name: " + name);
System.out.println("Job: " + job);
System.out.println("Hire Date:" + hireDate().toString());
}
empIterator.close();
} catch (SQLException e) {
System.err.println("SQLException" + e);
System.exit(1);
}
}

上一页  1 2 3 4 5 6 

Tags:SQLJ 开发 数据库

编辑录入:coldstar [复制链接] [打 印]
赞助商链接