JDBC

作者: kelaody | 来源:发表于2019-04-22 21:01 被阅读0次

基本概念:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

一、数据库连接

1.加载数据库驱动类

  (1)在工程下新建lib文件夹,将 ojdbc6.jar(jar包在:E:\oracle\product\11.2.0\dbhome_1\jdbc\lib)拷贝至该目录下

  (2)右键ojdbc6.jar文件,build path --> add too build path

  (3)将驱动类加载到内存中

          Class.forName("oracle.jdbc.driver.OracleDriver");

2.JDBC连接字符串

MySQL:

String Driver="com.mysql.jdbc.Driver"; //驱动程序

String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名

String Username="username"; //用户名

String Password="password"; //密码

Class.forName(Driver);

Connection con=DriverManager.getConnection(URL,Username,Password);

Oracle:


String Driver="oracle.jdbc.driver.OracleDriver";  //连接数据库的方法

String URL="jdbc:oracle:thin:@localhost:1521:orcl";  //orcl为数据库的SID

String Username="username"; //用户名

String Password="password"; //密码

Class.forName(Driver) ; //加载数据库驱动

Connection con=DriverManager.getConnection(URL,Username,Password); //常用数据库链接方式

3.获取数据库连接对象

  Connection conn = DriverManager.getConnection(url,user,password);

4.写sql

  String sql = "xxxxxx";

5.创建PreparedStatement对象

  PreparedStatement ps  = conn.prepareStatement(sql);

6.执行查询返回ResultSet结果集对象

  ResultSet rs = ps.executeQuery();

7.遍历结果集,获取查询结果

  while(rs.next){

          rs.getXxx()

  }

8.释放资源

  rs.close()

  ps.close()

  conn.close()

例:


package cn.mystudy;

import java.sql.Connection;

import java.sql.DatabaseMetaData;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class TestJDBC {

public static void main(String[] args) {

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

String user = "SCOTT";

String password = "0128";

Connection conn = DriverManager.getConnection(url,user,password);

String sql = "select * from emp where deptno = ?";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setInt(1, 20);

ResultSet rs = ps.executeQuery();

while(rs.next()){

System.out.println(rs.getInt("empno"));

      }

rs.close();

    ps.close();

    conn.close();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

二、JDBC的封装
新建一个util包,然后在其下面建立DBUtil.java

package util;


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

public class DBUtil {
    private static String DRIVER = "";
    private static String URL = "";
    private static String USER = "";
    private static String PASSWORD = "";
    static{
        try {
            InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
            Properties prop = new Properties();
            prop.load(in);
            DRIVER = prop.getProperty("driver");
            URL = prop.getProperty("url");
            USER = prop.getProperty("user");
            PASSWORD = prop.getProperty("password");
            Class.forName(DRIVER);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("配置文件读取失败");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        
    }
    
    public static Connection getConnection() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
        
    }
    
    public static void close(Connection conn,Statement ps) {
        if (ps !=null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }   
        }
        if (conn !=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }   
        }       
    }
    public static void close(Connection conn,Statement ps,ResultSet rs) {
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps!=null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
}

在根目录下建立db.properties文件

# do not write space
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
user=SCOTT
password=0128

# mysql db
#driver=com.mysql.jdbc.Driver
#url=jdbc:mysql://localhost:3306/db_name
#user=root
#password=1234

使用DBUtil.java

package cn.mystudy;

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

import util.DBUtil;

public class TestJDBC2 {
    
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = DBUtil.getConnection();
            String sql = "select * from emp where deptno = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, 20);
            rs=ps.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt("empno"));             
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(conn, ps, rs);
        }
    }   
}

相关文章

  • JDBC

    JDBC原理: JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC 的使用

    JDBC JDBC什么是JDBCJDBC 的使用JDBC 的数据类型 什么是JDBC JDBC(Java Data...

  • Java和MySQL简建立连接

    JDBC JDBC插入多条数据 JDBC查询 JDBC动态传参 JDBC回滚 JDBC将数据库中的信息装入List...

  • JDBC

    JDBC JDBC:Java DataBase Connectivity JDBC的本质是什么?JDBC是SUN公...

  • java异常合集

    jdbc com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExce...

  • Day05--JDBC

    JDBC: 抽取JDBC工具类:JDBCUtils JDBC控制事务

  • JDBC

    JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC编程目录

    JDBC编程目录 SQL基础JDBC基础JDBC进阶

  • JDBC和数据库连接池

    1.JDBC介绍1.1 1.1 JDBC介绍 2.JDBC之API2.1 2.1 JDBC之API 3.JDBC例...

  • # day10_JDBC基础

    一,JDBC概述 1.为什么要使用JDBC 1.1没有JDBC 1.2有了JDBC后 2.JDBC的概念 2.1....

网友评论

      本文标题:JDBC

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