java+oracle oracle和java什么关系
各位老铁们,大家好,今天由我来为大家分享java+oracle,以及oracle和java什么关系的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java要和oracle 11g连接该如何配置oracle
java连接Oracle11G:
1,找到驱动包,在oracle安装目录下我的是D:\Oracle\product\11.1.0\db_1\jdbc\lib;此目录下有ojdbc5.jar,ojdbc6.jar,如果jdk5就用5,6就用6;
2,配置驱动包的变量(我把驱动包拷出来,放在d:\java\util里面),配置后上面MYSQL的类似。
3,测试代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class JDBCOracle{
//定义数据库驱动程序
public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
//定义数据库的连接地址
public static final String DBURL="jdbc:oracle:thin:@localhost:端口号:数据库标识符";
//端口号后标识符可以通过在doc下运行lsnrctl status查看 default:1521
//数据库的连接用户名
public static final String DBUSER="scott";
//数据库的连接密码
public static final String DBPASS="tiger";
public static void main(String args[]) throws Exception{//所有异常抛出
Connection conn= null;//数据库连接
Class.forName(DBDRIVER);//加载驱动程序
conn= DriverManager.getConnection(DBURL,DBUSER,DBPASS);
PreparedStatement pstmt= null;
String sql="INSERT INTO person(id,name,age,birthday) VALUES(myseq.nextVal,?,?,?)";
pstmt= conn.prepareStatement(sql);
pstmt.setString(1,"tomcat");
pstmt.setInt(2,30);
pstmt.setDate(3,new java.sql.Date(new java.util.Date().getTime()));
pstmt.executeUpdate();//执行更新操作
pstmt.close();
conn.close();//数据库关闭
}
};
怎么实现用java访问oracle数据库
这个是完全没有问题的。
先期准备:
1、两台电脑必须要联网,能够访问到
2、将oracle的驱动程序拷贝到你的java的电脑上,并设置到环境变量中。
java代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbTest{
public static void main(String[] args){
Connection conn= null;
PreparedStatement prstm= null;
ResultSet rs= null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@ip:port:orcl";//数据库连接字符串,需要替换ip,port,orcl
String user="user";//用户名,需要替换你的数据库的用户名
String password="pswd";//密码,需要替换为对应的密码
conn= DriverManager.getConnection(url,user,password);//获取连接
prstm= conn.prepareStatement("SELECT 1 TEST_ID FROM DUAL");
rs= prstm.executeQuery();
while(rs.next()){
System.out.println("查询结果为:"+ rs.getInt("TEST_ID"));
}
} catch(InstantiationException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IllegalAccessException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(ClassNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//使用完毕进行相关内容的关闭,注意相关顺序
if(rs!= null){
try{
rs.close();
} catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(prstm!= null){
try{
prstm.close();
} catch(SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!= null){
try{
conn.close();
} catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
如何在Oracle中使用Java存储过程
通常有三种方法来创建java存储过程。
1.使用oracle的sql语句来创建:
e.g.使用create or replace and compile java source named"<name>" as
后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。
SQL>createorreplaceandcompilejavasourcenamed"javademo1"
as
importjava.sql.*;
publicclassJavaDemo1
{
publicstaticvoidmain(String[]argv)
{
System.out.println("hello,javademo1");
}
}
/
Java已创建。
SQL>showerrorsjavasource"javademo1"
没有错误。
SQL>createorreplaceprocedurejavademo1
as
languagejavaname'JavaDemo1.main(java.lang.String[])';
/
过程已创建。
SQL>setserveroutputon
SQL>calljavademo1();
调用完成。
SQL>calldbms_java.set_output(5000);
调用完成。
SQL>calljavademo1();
hello,javademo1
调用完成。
SQL>calljavademo1();
hello,javademo1
调用完成。2.使用外部class文件来装载创建
e.g.这里既然用到了外部文件,必然要将class文件放到oracle Server的某一目录下边。
publicclassOracleJavaProc
{
publicstaticvoidmain(String[]argv)
{
System.out.println("It'saJavaOracleprocedure.");
}
}
SQL>grantcreateanydirectorytoscott;
授权成功。
SQL>connscott/tiger@iihero.oracledb
已连接。
SQL>createorreplacedirectorytest_diras'd:/oracle';
目录已创建。
SQL>createorreplacejavaclassusingbfile(test_dir,'OracleJavaProc.CLASS')
2/
Java已创建。
SQL>createorreplaceproceduretestjavaprocaslanguagejavaname'OracleJavaProc.main(java.lang.String[])';
2/
过程已创建。
SQL>calltestjavaproc();
调用完成。
SQL>executetestjavaproc;
PL/SQL过程已成功完成。
SQL>setserveroutputonsize5000
SQL>calldbms_java.set_output(5000);
调用完成。
SQL>executetestjavaproc;
It'saJavaOracleprocedure.3.我推荐的一种方法,直接使用loadjava命令远程装载并创建。
先创建一个类, e.g.
importjava.sql.*;
importoracle.jdbc.*;
publicclassOracleJavaProc{
//Addasalgradetothedatabase.
publicstaticvoidaddSalGrade(intgrade,intlosal,inthisal){
System.out.println("CreatingnewsalgradeforEMPLOYEE...");
try{
Connectionconn=
DriverManager.getConnection("jdbc:default:connection:");
Stringsql=
"INSERTINTOsalgrade"+
"(GRADE,LOSAL,HISAL)"+
"VALUES(?,?,?)";
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setInt(1,grade);
pstmt.setInt(2,losal);
pstmt.setInt(3,hisal);
pstmt.executeUpdate();
pstmt.close();
}
catch(SQLExceptione){
System.err.println("ERROR!AddingSalgrade:"
+e.getMessage());
}
}
}使用loadjava命令将其装载到服务器端并编译:
D:eclipse3.1workspacedbtest>loadjava-uscott/tiger@iihero.oracledb-v-resolveOr
acleJavaProc.java
arguments:'-u''scott/tiger@iihero.oracledb'-v''-resolve''OracleJavaProc.java'
creating:sourceOracleJavaProc
loading:sourceOracleJavaProc
resolving:sourceOracleJavaProc
查询一下状态:
连接到:
Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production
WiththePartitioning,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.1.0-Production
SQL>SELECTobject_name,object_type,statusFROMuser_objectsWHEREobject_typeLIKE'JAVA%';
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPESTATUS
--------------------------------------------------
OracleJavaProc
JAVACLASSVALID
OracleJavaProc
JAVASOURCEVALID测试一下存储过程:
SQL>createorreplaceprocedureadd_salgrade(idnumber,losalnumber,hisalnum
ber)aslanguagejavaname'OracleJavaProc.addSalGrade(int,int,int)';
2/
过程已创建。
SQL>setserveroutputonsize2000
SQL>calldbms_java.set_output(2000);
调用完成。
SQL>executeadd_salgrade(6,10000,15000);
CreatingnewsalgradeforEMPLOYEE...
PL/SQL过程已成功完成。
SQL>select*fromsalgradewheregrade=6;
GRADELOSALHISAL
------------------------------
61000015000
关于java+oracle到此分享完毕,希望能帮助到您。