JDBC操作Oracle涉及的包
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
JDBC操作Oracle知识点梳理
- Oracle包的位置:product\11.2.0\dbhome_1\jdbc\lib
- JDBC操作Oracle的过程与MySql类似
- 存储过程的调用语句:{call 存储过程名称(参数1,参数2)}
-
存储函数的调用语句: {返回值=call 存储函数名称(参数1,参数2)}
-
JDBC操作Oracle步骤
-
加载驱动包
去这里寻找Oracle的驱动包:product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
-
创建用户信息字符串
创建用户名与密码
-
加载驱动类
oracle.jdbc.driver.OracleDriver
-
数据库url
jdbc:oracle:thin:@localhost:1521:orcl
- 创建数据库连接,利用连接完成数据库的CRUD操作
- 关闭各个资源
-
-
JDBC操作数据库的简单示例
public class OracleTest {
//oralc查询的基本步骤
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String username="scott"; //使用scott连接
String password = "123"; //密码
String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串
String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL
Class.forName(driver);//根据驱动类,获取字节码文件
Connection connection = DriverManager.getConnection(url,username,password);//创建连接
String sql="select ename , sal from emp";
Statement cs = connection.createStatement();
ResultSet rs = cs.executeQuery(sql);
while(rs.next()){
String name=rs.getString(1);
int salary=rs.getInt(2);
System.out.println(name+"的工资是:"+salary);
}
rs.close();
cs.close();
connection.close();
}
}
-
JDBC调用存储过程
-
存储过程的调用语句
{call 存储过程名称(参数1,参数2)}
- 调用存储过程涉及的API
-
|
| ||
|
| ||
|
| ||
存储过程对象.execute() | 执行存储过程 | ||
存储过程对象.getInt(获取哪一位占位符的值) | 获取输出参数的值 |
-
调用存储过程示例:要实现该示例,Oracle 中,要存在一个名称为p_yearSalary(?,?)的存储过程
public class OracleTest {
//oralc查询的基本步骤
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String username="scott"; //使用scott连接
String password = "123"; //密码
String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串
String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL
Class.forName(driver);//根据驱动类,获取字节码文件
Connection conn = DriverManager.getConnection(url,username,password);
//获取名称为p_yearSalary(?,?)的存储过程,他有两个参数
CallableStatement prepareCall = conn.prepareCall("{call p_yearSalary(?,?)}");
//获取第一个占位符,并设置该占位符的参数。第一个参数是输入参数
prepareCall.setInt(1,7499);
//第二个参数是输出参数,要用特有的方法,并设置该参数的类型
prepareCall.registerOutParameter(2, OracleType.STYLE_INT);
prepareCall.execute();//执行存储过程
int yearSalary=prepareCall.getInt(2);
System.out.println("年薪是:"+yearSalary);
}
}
-
JDBC调用存储函数
-
存储函数的调用语句
{返回值=call 存储函数名称(参数1,参数2)}
-
注意事项:
- 存储函数与存储过程的调用方法一样;唯一的不同只在调用语句上
-
存储函数示例:Oracle 中,要存在一个名称为f_emplyeeName(?)的存储函数
public class OracleTest {
//oralc查询的基本步骤
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String username="scott"; //使用scott连接
String password = "123"; //密码
String driver="oracle.jdbc.driver.OracleDriver";//声明驱动字符串
String url="jdbc:oracle:thin:@localhost:1521:orcl";//获取数据的URL
Class.forName(driver);//根据驱动类,获取字节码文件
Connection conn = DriverManager.getConnection(url,username,password);
CallableStatement prepareCall = conn.prepareCall("{?=call f_emplyeeName(?)}");
//第一个参数是返回值,设置返回值的类型为字符串
prepareCall.registerOutParameter(1, Types.VARCHAR);
prepareCall.setInt(2,7499); //获取第二个占位符,并设置该占位符的参数
prepareCall.execute();//执行存储函数
String name=prepareCall.getString(1);//获取第一个占位符的返回值
System.out.println("姓名是:"+name);
}
}
-