java连接Oracle数据库

连接数据库有多种方式,对于初学者连接数据库,这里介绍两种方法及两种连接配置方式

方法一  运用statement 

1、创建一个JDBC-statement项目

2、导包 --把连接数据库的驱动包导入

oracle驱动包可以在Oracle安装位置找到,也可以自己去下载

路径就是 app\计算机用户名\product\11.2.0\dbhome_1\jdbc\lib

mysql驱动包也可以自己去下载

我的Oracle驱动包在这个位置

导入驱动包,在右键build Path

 

2、加载驱动包,与数据库建立连接

(创建一个Conn类用于数据库的连接)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conn {
    static String driverClass="oracle.jdbc.driver.OracleDriver"; //oracle的驱动
    static String url="jdbc:oracle:thin:@localhost:1521:gfs";  //连接oracle路径方式 “”gfs“”是要建立连接的数据库名 1521端口
    static String user="system";   //user是数据库的用户名
    static String password="HeXu0607";  //用户登录密码
    
   public static Connection getconn() {  //为了方便下面的讲解,这里专门建立了一个用于数据库连接的一个方法
       Connection conn=null;
       try {

        //首先建立驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        //驱动成功后进行连接
        conn=DriverManager.getConnection(url, user, password);

       System.out.println("连接成功");
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
       return conn; //返回一个连接
   }
}
//自己在测试连接的时候可以不用定义连接方法

3、建立好连接后就是进行对数据库的操作了,首先是简单的查询操作

(为了方便演示,我先创建好这几个类,代表了不同的操作方法:查询Query,插入Insert,删除Delete,更新Update)

package com.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Query {
   public static void main(String[] args) {
    Connection conn=null;
    Statement st=null;
    ResultSet rs=null;
        try {
            //1、获取连接对象
            conn=Conn.getconn();
            //2、创建statement类对象,用来执行SQL语句!!
            st=conn.createStatement();
            //3、创建sql查询语句
            String sql="select *from stu";
            //4、执行sql语句并且换回一个查询的结果集
            rs=st.executeQuery(sql);
            while(rs.next()) {  //循环遍历结果集
                int id=rs.getInt("id");
                String name=rs.getString("name");
                int score=rs.getInt("score");
                System.out.println("id=" + id + "--" + "name=" + name + "--" + "score=" + score);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
}
}

 执行结果

 4、插入操作

package com.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class Insert {
public static void main(String[] args) {
    Connection conn=null;
    Statement st=null;
    conn=Conn.getconn();
    try {
        //获得连接
        st=conn.createStatement();
        //创建插入的sql语句
        String sql="insert into stu values(1002,'大佬',87)";
        //返回一个进行此操作的结果,要么成功,要么失败,如果返回的结果>0就是成功,反之失败
        int result=st.executeUpdate(sql);
        if(result>0) {
            System.out.println("添加成功");
        }
        else {
            System.out.println("添加失败");
        }
            
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}
 

 5、删除操作

package com.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class Delete {
public static void main(String[] args) {
    Connection conn=null;
    Statement st=null;
    conn=Conn.getconn();
    try {
        st=conn.createStatement();
        String sql="delete from stu where id='1002'";
        int result=st.executeUpdate(sql);
        //和插入一样,如果返回的结果大于0则操作成功
        if(result>1) {
            System.out.println("删除成功");
        }
        else{
            System.out.println("删除失败");
        }
            
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
}

 6、更新操作

package com.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class Updata {
public static void main(String[] args) {
    Connection conn=null;
    Statement st=null;
    conn=Conn.getconn();
    try {
        st=conn.createStatement();
        String sql="update stu set id=1003 where name='古富升'";
        int result=st.executeUpdate(sql);
        if(result>0)
            System.out.println("更改成功");
        else
            System.out.println("更改失败");
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
}
 

 二、preparedStatement (预处理)

 1、首先创建一个java工程,然后倒入驱动包,在build Path 驱动包 ,接着加载驱动包,创建用于连接的一个方法,和之前一样,就不多说了。

package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conn {
    static String driverClass="oracle.jdbc.driver.OracleDriver";
    static String url="jdbc:oracle:thin:@localhost:1521:gfs";
    static String user="system";
    static String password="HeXu0607";
    
   public static Connection getconn() {
       Connection conn=null;
       try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn=DriverManager.getConnection(url, user, password);
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
       return conn;
   }
}
 

2、查询操作(注意和statement的不同之处,除了这一点不同,其他都一样的,就不做过多介绍了,直接看一下代码啦)

package com.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Query {
  public static void main(String[] args) {
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
            try {
                conn = Conn.getconn();
                //创建sql语句 但先不给出要查询的记录的id
                String sql = "select *from stu where id=?";
                //创建预处理对象,对sql语句先进行预处理
                ps = conn.prepareStatement(sql);
                //之后再设置参数id
                ps.setInt(1, 1002);
                //最后在把预处理sql语句进行执行,返回结果集
                rs = ps.executeQuery();
                while(rs.next()) {
                    int id=rs.getInt("id");
                    String name=rs.getString("name");
                    int score=rs.getInt("score");
                    System.out.println("id="+id+"--"+"name="+name+"--"+"score="+score);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }    
}
}
 

 3、插入操作

package com.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Insert {
 public static void main(String[] args) {
    Connection conn=null;
    PreparedStatement ps=null;
        try {
            conn=Conn.getconn();
            String sql="insert into stu values(?,?,?)";
            ps=conn.prepareStatement(sql);
            ps.setInt(1, 1002);
            ps.setString(2, "升哥哥");
            ps.setInt(3, 83);
            int rs=ps.executeUpdate();
            if(rs==1)
                System.out.println("添加成功");
            else
                System.out.println("添加失败");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}
}
 

 4、删除操作

package com.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Delete {
public static void main(String[] args) {
    Connection conn=null;
    PreparedStatement ps=null;
    try {
        conn=Conn.getconn();
        String sql="delete from stu where id=?";
        ps=conn.prepareStatement(sql);
        ps.setInt(1,1003);
        int rs=ps.executeUpdate();
        if(rs>0)
            System.out.println("删除成功");
        else 
            System.out.println("删除失败");
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
}
 

 5、更新操作

package com.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Update {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement ps=null;
        try {
            conn=Conn.getconn();
            String sql="update stu set score=? where id=?";
            ps=conn.prepareStatement(sql);
            ps.setInt(1,60);
            ps.setLong(2,1001);
            int rs=ps.executeUpdate();
            if(rs>0)
                System.out.println("更改成功");
            else
                System.out.println("更改失败");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
 

 接下来再来讲解一下建立连接的一个另外配置方式

之前我们都是把连接的相关配置信息直接写在程序代码里面,那样程序的灵活性就会相对变差,当需要连接其他数据库时又得重新改程序,相当繁琐。下面就来讲解另外一种配置方式

properties文本配置

1、首先建立一个新项目,然后导包、add build path

2、为了快捷,在项目底下创建一个java.properties文件(实际中最好在项目下建立一个lib文件夹,放置各种包,例如jdbc驱动包)

3、打开java.properties,把连接的相关配置写入进去(这里补充一点:properties文件里面都是以键值对的方式写入的),写好后保存。

4、创建Conn类配置相关连接信息

package com.conn;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.junit.Test;

public class Conn {
    static String driverClass=null;
    static String url=null;
    static String user=null;
    static String password=null;
    
    static {
        try {
            //1、创建一个properties对象,用于一会获取之前文本里面的配置信息
            Properties properties=new Properties();
            //2、创建一个输入流,把文本里的信息写入输入流中
            InputStream is=new FileInputStream("java.properties");
            //properties.load()方法获取输入流
            properties.load(is);
            //获取键值对的信息
            driverClass=properties.getProperty("driverClass");
            url=properties.getProperty("url");
            user=properties.getProperty("user");
            password=properties.getProperty("password");
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        
    }
    
    public static Connection getconn() {
        Connection conn=null;
        try {
            Class.forName(driverClass);
            conn=DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        } 
        return conn;
    }
}
 

5、创建一个example类来进行测试

package com.conn;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Example {
   public static void main(String[] args) {
    Connection conn=null;
    Statement st=null;
    ResultSet rs=null;
        try {
            conn=Conn.getconn();
            st=conn.createStatement();
            String sql="select *from stu";
            rs=st.executeQuery(sql);
            while(rs.next()) {
                int id=rs.getInt("id");
                String name=rs.getString("name");
                int score=rs.getInt("score");
                System.out.println("id=" + id + "--" + "name=" + name + "--" + "score=" + score);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
}
}
 

 项目的目录结构如下:

 

希望对大家有帮助,另外还有很多个样子的方式,比如创建一个dao,这里就不多讲解了,大家可以去了解一下,项目开发一般都会用到它的!

  • 35
    点赞
  • 270
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值