JDBC创建与使用

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
1、带入驱动jar包
2、注册驱动
3、获取数据库链接对象 connection
4、注册sql
5、获取执行sql语句的对象 statement
6、执行sql,接受返回结果
7、处理结果
8、施放资源

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JdbcDemo {
    public static void main(String[] args) throws Exception {
//        1、复制mysql-connector-java-5.1.37-bin.jar包到目录  然后Add as library;(加入到项目空间)
//        2、注册驱动
        Class.forName("com.mysql.jdbc.Driver");//mysql5后的驱动可以省略注册驱动步骤
//        3、获取数据库链接对象
        Connection conn  = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "admin");
//        4、定义sql语句
        String sql = "update account set balance=1000 where id=1";
        //5、获取执行sql对象  statement
        Statement stmt = conn.createStatement();
        //6、执行sql
        int executeUpdate = stmt.executeUpdate(sql);
        //7、处理结果
        System.out.println(executeUpdate);
        //8、施放资源
        stmt.close();
        conn.close();
    }
}
//("mysql-connector-java-5.1.37");
//Class.forName("mysql-connector-java-5.1.37");
//Connection cnc = DriverManager.getConnection("jdbc:mysql:localhost:3306/db1","root","admin");

3、详解各个对象:
DriverManager :驱动管理 //

1、注册驱动 
static void registerDriver(Driver driver) //向 DriverManager 注册给定驱动程序
 ###Class.forName("com.mysql.jdbc.Driver"); 真正注册的还是使用的DriverManager 
 
2、注册数据库链接DriverManager.getConnection()(String url, String user, String password) ;

         

Connection:数据库链接对象

一、获取执行sql对象
1、Connection.createStatement()  创建一个 Statement 对象来将 SQL 语句发送到数据库。
2、prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库
二、管理事务:
1、开启事务:void setAutoCommit(boolean autoCommit)  :调用该方法设置fasle,及是开启事务
2、提交事务: void commit()  
3、回滚事务 : void rollback(Savepoint savepoint)  

Statement:执行sql的对象

 boolean execute(String sql)  //可以执行任意sql 
 executeUpdate(String sql) //执行DMl语句 (insert、updatr、delete)语句DDL(create,alter,drop)语句
 ResultSet executeQuery(String sql)  //DQL(select)查询语句  返回的是ResulySet结果集对象

ResulySet: 结果集对象
PreparedStatement: 执行sql对象

处理异常,解决内存泄露问题;比较完整的 JDBC 链接与施放流程

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

public class JbdcDemo2 {
    public static void main(String[] args) throws SQLException {
        Connection con =null;//解决在程序末尾关闭施放内存的话会造成内存泄露问题,
        Statement stmt=null;//解决在程序末尾关闭施放内存的话会造成内存泄露问题
        //注册驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //sql语句
            String sql = "insert into account values(null,'奥斯卡',1500)";

            String url = "jdbc:mysql://localhost:3306/db1";
            String user="root";
            String pwd = "admin";
            try {
//                Connection con = DriverManager.getConnection(url,user,pwd);
                con = DriverManager.getConnection(url,user,pwd);//提升变量作用域解决finally施放资源的问题
//              获取执行数据库的对象
//                Statement stmt = con.createStatement();
                stmt = con.createStatement();
                int i = stmt.executeUpdate(sql);//返回的结果是影响的行数
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            //施放链接sql对象;
//                防止空指针异常进行判断
            if(stmt!=null){
                stmt.close();
            }
            //施放数据库链接对象
            //防止空指针异常进行判断
            if(stmt!=null){
                con.close();
            }
        }
    }
}


JDBC练习updata 修改表中记录

import java.sql.*;

public class DbUpdateTest {
    public static void main(String[] args) throws SQLException {
        //定义链接对象;
        Connection con = null;
        //执行数据库对象
        Statement stmt = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //链接数据库对象
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
            //定义sql
            String sql = "update account set balance=5000 where id = 5";
            //获取执行sql对象;
            stmt = con.createStatement();
            //执行sql语句
            stmt.executeUpdate(sql);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (con != null){
                con.close();
            }
            if (stmt != null){
                stmt.close();
            }
        }
    }
}

JDBC 删除记录

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

public class JdDelectTable {
    public static void main(String[] args) throws SQLException {
        //链接数据库对象
        Connection conn = null;
        //执行数据库对象
        Statement stmt = null;
        //注册驱动
//        try {
//            Class.forName("com.mysql.jdbc.Driver");
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }  省略驱动注册代码,mysqljar5以后在链接数据库的时候也会自动创建
        try {
            //连接数据库
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
            //sql语句
            String sql = "delete from account where id = 1 ";
            //获取执行sql对象
           stmt = conn.createStatement();
           //执行sql语句
            stmt.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            System.out.println("关闭");
            //资源施放  先关闭执行对象 再关闭链接对象,关闭前进行判断如果没有连接上的话,就没必须要关闭
            if(stmt != null){
                stmt.close();
            }
            if(conn != null){
                conn.close();
            }
        }
    }
}

DJBC创建表

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DjbcCreateTable {
    public static void main(String[] args) throws SQLException {
        //链接数据库对象
        Connection conn = null;
        //执行数据库对象
        Statement stmt = null;
        //注册驱动
//        try {
//            Class.forName("com.mysql.jdbc.Driver");
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }  省略驱动注册代码,mysqljar5以后在链接数据库的时候也会自动创建
        try {
            //连接数据库
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","admin");
            //sql语句
            String sql = "create table student1(age int,name varchar(20) )";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行sql语句
            stmt.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            System.out.println("关闭");
            //资源施放  先关闭执行对象 再关闭链接对象,关闭前进行判断如果没有连接上的话,就没必须要关闭
            if(stmt != null){
                stmt.close();
            }
            if(conn != null){
                conn.close();
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值