美文网首页
JDBC:从入门到放弃(二)

JDBC:从入门到放弃(二)

作者: 秀逼 | 来源:发表于2017-10-26 00:02 被阅读0次

ConnectionFactory

在使用ConnectionFactory之前,请保证电脑上已经安装了oracle数据库,Navicat,以及授权了新注册的用户。同时,下载oracle对应的jdbc驱动包,这里采用的是ojdbc6的jar包,具体下载链接可以点这个,有关oracle以及相关用户授权的操作,可以参见这篇博文,写的很清楚了。

示例1

使用ConnectionFactory简单工厂,创建Oracle的Connection对象

目录结构如下
1.png
jdbcinfor.properties
oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:XE
oracle.user=guest
oracle.password=guest
工具类:ConnectionFactory.class
package com.iotek.common;

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

public class ConnectionFactory {
    private static String DRIVER;
    private static String URL;
    private static String USER;
    private static String PASSWORD;

    static {
        Properties properties = new Properties();
        InputStream iStream = ConnectionFactory.class.getResourceAsStream("jdbcinfo.properties");
        try {
            properties.load(iStream);
            DRIVER = properties.getProperty("oracle.driver");
            URL = properties.getProperty("oracle.url");
            USER = properties.getProperty("oracle.user");
            PASSWORD = properties.getProperty("oracle.password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        Connection connection = null;
        try {
            Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return connection;
    }
    
    public static void main(String[] args) {
        System.out.println(ConnectionFactory.getConnection());
    }
}

这里记得要导入相应的ojdbc6.jar的包,否则会报ClassNotFound的异常。

示例2

创建student表
create table student(
  id number(10) primary key,
  name varchar2(20) not null,
  address varchar2(30),
  gender varchar2(10),
  age number(3) chec(age between 1 and 100)
);
创建序列

create sequence student_seq
  start with 1
  increment by 1;
创建student表对应的student类,object-relation-map,简称:对象关系映射
package com.iotek.pojo;

import java.io.Serializable;

public class Student implements Serializable {

    private Long id;
    private String name;
    private String address;
    private String gender;
    private Integer age;

    public Student() {
    }

    public Student(Long id, String name, String address, String gender, Integer age) {
        super();
        this.id = id;
        this.name = name;
        this.address = address;
        this.gender = gender;
        this.age = age;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", address=" + address + ", gender=" + gender + ", age=" + age
                + "]";
    }

}


创建studentJDbc类
package com.iotek.advance;

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

import com.iotek.common.ConnectionFactory;
import com.iotek.pojo.Student;

public class StudentJdbc {
    public void save(Student student) {
        
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        
        try {
            
            connection = ConnectionFactory.getConnection();
            String selectSQL = "SELECT student_seq.nextval FROM dual";
            preparedStatement = connection.prepareStatement(selectSQL);
            resultSet = preparedStatement.executeQuery();
            Long id = null;
            
            if (resultSet.next()) {
                id = resultSet.getLong(1);
            }
            
            String insertSQL = "INSERT INTO student VALUES(?,?,?,?,?)";
            preparedStatement = connection.prepareStatement(insertSQL);
            preparedStatement.setLong(1, id);
            preparedStatement.setString(2, student.getName());
            preparedStatement.setString(3, student.getAddress());
            preparedStatement.setString(4, student.getGender());
            preparedStatement.setInt(5, student.getAge());
            
            int rows = preparedStatement.executeUpdate();
            System.out.println("受影响的行数:" + rows);
            
        } catch (Exception e) {
            e.printStackTrace();
            try {
                connection.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            
        }       
    }
}

JDBC操作数据库之后,一定要记得将connection,statement,以及结果集resultSet进行关闭。这里写一个工具类,进行此类操作

负责关闭释放内存的工具类UtilsJdbc
class UtilsJdbc {
  public static void close(Connection conn, Statement stmp, ResultSet rs) {
    if ( conn != null) {
      try {
        conn.close();
      } catch(Exception e) {
         e.printStackTrace();
      }
    } 
  }
}
其他的statement以及resultset的释放与上面同理,当然也可以重载该方法。

相关文章

  • JDBC:从入门到放弃(二)

    ConnectionFactory 在使用ConnectionFactory之前,请保证电脑上已经安装了oracl...

  • JDBC:从入门到放弃(一)

    JDBC(JAVA数据库连接)是用于执行sql语句的api,可以为多种关系型数据库,提供统一访问,由一组java语...

  • JDBC从入门到放弃(三)

    本节,我们为大家介绍下JDBC的批处理问题。 向student表中插入一万条数据 运行结果为:2556 ms 采用...

  • JDBC从入门到放弃(四)

    本节将为大家介绍ORM模型 ORM:对象关系映射模型,也就是把对象映射到数据库中 其中,类映射为数据库中的表,类的...

  • 再谈JDBC(从放弃到入门)

    JDBC作为JavaEE的一部分,在web项目中都直接或者间接使用其来操作数据库,无需开发人员针对某种特别的数据库...

  • 代码审计从入门到放弃(三) & phplimit

    前言 接着前面的代码审计从入门到放弃(一) & function、代码审计从入门到放弃(二) & pcrewaf ...

  • 创造的乐趣

    从入门到放弃 ██████████████████████████████████████████████████...

  • Canvas从入门到放弃 (二)

    在慕课网上学习了 Canvas绘图详解 这门教程,写了这篇canvas教程,想和大家分享学习的过程,希望和大家共同...

  • Python从入门到放弃(二)

    开发环境部署 首先访问python环境下载地址去下载最新的python版本。这里我们使用的是3.6.0(3.0以下...

  • FQ:从入门到放弃(二)

    上次的FQ:从入门到放弃(一)介绍了XXNet的部署和基本使用。本文整理一些部署过程中出现的问题,都是这几天朋友们...

网友评论

      本文标题:JDBC:从入门到放弃(二)

      本文链接:https://www.haomeiwen.com/subject/bbacpxtx.html