主题:java做oracle数据课设计,请教高手教连接代码!!!
dsbjoe
[专家分:0] 发布于 2007-11-15 22:08:00
[em18]请高手帮忙啊,怎么样让java程序连接oracle啊?是用JDBC么?具体代码是怎样的?
回复列表 (共7个回复)
沙发
happyboy2007 [专家分:3900] 发布于 2007-11-16 17:34:00
有三种方式
1 通用的JDBC-ODBC桥连接
驱动字符串 sun.jdbc.odbc.JdbcOdbcDriver
连接字符串 JDBC:ODBC:数据源名
2 直连接
驱动字符串 oracle.jdbc.driver.OracleDriver
连接字符串 1) thin方式 JDBC:ORACLE:thin:@主机名:端口号:数据库例程名
2) oci8方式 JDBC:ORACLE:oci8:@网络服务名
import java.sql.*;
class Demo
{
//JDBC-ODBC 桥连接
public static void Con1()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("JDBC:ODBC:emp","scott","tiger");
Statement s = con.createStatement();
String sql = "select * from emp";
ResultSet r = s.executeQuery(sql);
while(r.next())
{
System.out.println (r.getString("empno")+"\t"+r.getString("ename")+"\t"+r.getString("sal"));
}
con.close();
s.close();
r.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//thin 桥连接
public static void Con2()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("JDBC:ORACLE:thin:@LocalHost:1521:DB","scott","tiger");
Statement s = con.createStatement();
String sql = "select * from emp";
ResultSet r = s.executeQuery(sql);
while(r.next())
{
System.out.println (r.getString("empno")+"\t"+r.getString("ename")+"\t"+r.getString("sal"));
}
con.close();
s.close();
r.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//oci8连接
public static void Con3()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("JDBC:ORACLE:oci8:@test","scott","tiger");
Statement s = con.createStatement();
String sql = "select * from emp";
ResultSet r = s.executeQuery(sql);
while(r.next())
{
System.out.println (r.getString("empno")+"\t"+r.getString("ename")+"\t"+r.getString("sal"));
}
con.close();
s.close();
r.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String[]args)
{
//依次调用
Demo.Con1();
Demo.Con2();
Demo.Con3();
}
}
板凳
dsbjoe [专家分:0] 发布于 2007-11-16 21:54:00
谢谢楼上啊!那能再给我讲讲那三种连接方法的区别吗?实在太感谢了!
3 楼
happyboy2007 [专家分:3900] 发布于 2007-11-17 11:28:00
JDBC-ODBC是利用WINDOWS系统提供的ODBC数据源对数据库进行连接,它的驱动支持所有流行的数据库。
thin和oci8方式是ORACLE在JAVA中独有的纯连接方式。而且thin要比oci8访问数据库的速度要快。
使用纯连接方式连接ORACLE数据库,需要一个驱动包。它在 oracle主目录\jdbc\lib\classes12.jar或classes12.zip
4 楼
dsbjoe [专家分:0] 发布于 2007-11-19 16:42:00
JDBC:ORACLE:thin:@LocalHost:1521:DB","scott","tiger"
里面的1521都是默认一致的吗?scott和tiger分别是用户名和密码吧?
那个代码里有两个empno啊!
我想用java做成小程序,行吗?
——————我发现我很菜,但是我很谦虚,现在开始我要努力,谢谢高手!!!
5 楼
happyboy2007 [专家分:3900] 发布于 2007-11-20 17:27:00
写错了,把第二个empno改成sal。
我利用的是ORACLE 9I中自带的SCOTT用户下的EMP表。只要你用本地主机连接数据库,并且端口号为ORACLE默认端口号1521,SCOTT密码设置为TIGER。
并且特别注意,桥连接中数据源为emp。
在thin连接中,数据库例程名设置为你自己的。
在oci8方式中,网络服务名为test就可以。
6 楼
dsbjoe [专家分:0] 发布于 2007-11-22 22:01:00
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
class W1 extends Frame implements WindowListener,ActionListener
{
Label lname,lId,lsex;
Button bcom;
TextField tname,tId;//这两个文本区用来返回从数据库得到的姓名和学号
static String name,Id; //用static对吗?
public W1(){
super("欢迎来到学生管理系统");
setSize(600,300);
setVisible(true);
addWindowListener(this);
bcom=new Button("查询");
setLayout(new FlowLayout());
lname=new Label("姓名");
lId=new Label("学号");
lsex=new Label("性别");
Choice csex;
csex=new Choice();
csex.addItem("男");
csex.addItem("女");
tname=new TextField(10);
tId=new TextField(10);
add(lname);
add(tname);
add(lId);
add(tId);
add(lsex);
add(csex);
add(bcom);
bcom.addActionListener(this);
}
public void windowClosing(WindowEvent e)
{System.exit(0);}
public void windowActivated(WindowEvent e){}//我没加适配器
public void windowDeactivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
//thin 桥连接
public static void Con2()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("JDBC:ORACLE:thin:@LocalHost:1521:Joe","system","joe");
Statement s = con.createStatement();//我的数据库名为joe,用system登陆的,密码为joe
String sql = "select * from stu";//我用sqlplus建立了一个stu表,里面就一个name和一个Id属性
ResultSet r = s.executeQuery(sql);
while(r.next())
{
name=r.getString("NAME");
Id=r.getString("ID");
}
con.close();
s.close();
r.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String args[])
{
new W1();
Con2();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bcom)//把上面得到的显示在tname和tId里
{
tname.setText(name);
tId.setText(Id);
}
}
}
我说明一下啊,我用的oracle9i,用system登陆,创建了stu表,有两个属性,name和id,现在主要是测试一下连接,可是联不上啊,点按钮没有显示
今天看书的时候,书上说到,要找到JDBC驱动程序所在的JAR或ZIP文件,将该驱动程序的路径添加到classpath上,是不是要改环境变量才能连接啊?我改了可是还是没反应呢
7 楼
dsbjoe [专家分:0] 发布于 2007-11-23 22:10:00
好了,我自己解决啦,原来要把jdbc的驱动加到jre目录下的ext里啊!
我来回复