回 帖 发 新 帖 刷新版面

主题:java做oracle数据课设计,请教高手教连接代码!!!

[em18]请高手帮忙啊,怎么样让java程序连接oracle啊?是用JDBC么?具体代码是怎样的?

回复列表 (共7个回复)

沙发

有三种方式

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();
    }
}

板凳

谢谢楼上啊!那能再给我讲讲那三种连接方法的区别吗?实在太感谢了!

3 楼

JDBC-ODBC是利用WINDOWS系统提供的ODBC数据源对数据库进行连接,它的驱动支持所有流行的数据库。

thin和oci8方式是ORACLE在JAVA中独有的纯连接方式。而且thin要比oci8访问数据库的速度要快。

使用纯连接方式连接ORACLE数据库,需要一个驱动包。它在 oracle主目录\jdbc\lib\classes12.jar或classes12.zip

4 楼

JDBC:ORACLE:thin:@LocalHost:1521:DB","scott","tiger"
里面的1521都是默认一致的吗?scott和tiger分别是用户名和密码吧?
那个代码里有两个empno啊!
我想用java做成小程序,行吗?


——————我发现我很菜,但是我很谦虚,现在开始我要努力,谢谢高手!!!

5 楼

写错了,把第二个empno改成sal。

我利用的是ORACLE 9I中自带的SCOTT用户下的EMP表。只要你用本地主机连接数据库,并且端口号为ORACLE默认端口号1521,SCOTT密码设置为TIGER。

并且特别注意,桥连接中数据源为emp。 
              在thin连接中,数据库例程名设置为你自己的。
              在oci8方式中,网络服务名为test就可以。

6 楼

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 楼

好了,我自己解决啦,原来要把jdbc的驱动加到jre目录下的ext里啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册