其他分享
首页 > 其他分享> > 谈谈JDBC

谈谈JDBC

作者:互联网

Java操作数据库

1.数据库驱动

驱动:声卡、显卡、数据库

 

我们程序会通过 数据库 驱动,和数据库打交道!

2.JDBC

一个Java操作数据库的规范,俗称就是JDBC

我们只需要掌握JDBC接口的操作即可

java.sql、javax.sql,这两个包默认就有

我们还需要一个数据库驱动包

3.第一个JDBC程序

1.数据库环境搭建【建数据库表】

  CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;
  USE jdbcStudy;
  CREATE TABLE users(
  `id` INT PRIMARY KEY,
  `NAME` VARCHAR(40),
  `PASSWORD` VARCHAR(40),
  `email` VARCHAR(60),
  `birthday` DATE
  );
  INSERT INTO users(`id`,`NAME`,`PASSWORD`,`email`,`birthday`)
  VALUES(1,'juanxingcai','123456','3506565743@qq.com','1980-12-04'),
  (2,'lisi','123456',' lisi@sina.com','1981-12-04'),
  (3, 'wangwu','123456','wangwu@sina.com','1979-12-04');

2.创建一个新项目

3.导入数据库驱动

首先在目录下创建一个lib的文件夹-把mysql-connector-java-5.1.47复制到这里面,然后右键Add as Library(把它添加到项目的库里面)

这样子才是ok

 

 4.编写测试代码

public class JdbcfirstDome {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.用户信息和url
        String url ="jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
        String username = "root";
        String password = "123456";
        //3.连接成功,数据库对象 Connection代表数据库
        Connection connection = DriverManager.getConnection(url,username,password);

        //4.执行sql的对象 Statement执行sql
        Statement statement = connection.createStatement();


        //5.执行sql的对象 去执行sql 可能存在结果
        String sql="SELECT * FROM users";

        ResultSet resultSet = statement.executeQuery(sql);//返回的结果集

        while (resultSet.next()){
            System.out.println("id="+resultSet.getObject("id"));
            System.out.println("name="+resultSet.getObject("NAME"));
            System.out.println("pwd="+resultSet.getObject("PASSWORD"));
            System.out.println("email="+resultSet.getObject("email"));
            System.out.println("birth="+resultSet.getObject("birthday"));
        }
        //6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

结果

id=1
name=juanxingcai
pwd=123456
email=3506565743@qq.com
birth=1980-12-04
id=2
name=lisi
pwd=123456
email= lisi@sina.com
birth=1981-12-04
id=3
name=wangwu
pwd=123456
email=wangwu@sina.com
birth=1979-12-04

5.实现JDBC步骤

1.加载驱动【我这边采用的是MySQL的驱动】

注意点:Mysql8.0版本之前的驱动是com.mysql.jdbc.Driver【我的版本是8.0之后的】

2.获取链接【无非就是url,user,password】

注意点:Mysql版本不一样,url的参数也许不同,具体问题具体分析

3.获取数据库操作对象【执行sql语句的对象】

4.执行sql语句【增删改查】

5.处理查询结果集

6.关闭资源

4.提取工具类

db.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username=root
password=123456

JdbcUtils类

这边我们先把基本的东西封装成工具类,之后直接拿来用即可

public class JdbcUtils {
    private static String driver=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;
    static {
        try{
        //可以理解为获取db.properties文件的信息 InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties =new Properties();
        //从输入流中读取属性列表(键和元素对) properties.load(in);
         driver=properties.getProperty("driver"); url=properties.getProperty("url"); username=properties.getProperty("username"); password=properties.getProperty("password"); //1.驱动只需加载一次 Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } } //获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } //释放资源 public static void release(Connection conn, Statement st, ResultSet res){ if (res!=null){ try { res.close(); }catch (SQLException e){ e.printStackTrace(); } } if (st!=null){ try { st.close(); }catch (SQLException e){ e.printStackTrace(); } } if (conn!=null){ try { conn.close(); }catch (SQLException e){ e.printStackTrace(); } } } }

5.PreparedStatement对象

它可以防止sql注入问题

我们写这个记住几个步骤

1.获取数据库链接

2.sql语句

3.预编译sql

4.手动给参数赋值

5.执行怎删改的函数

6.释放资源

我们这边试着向数据库添加一个数据,使用perparedStatement对象

public class TextInsert {
    public static void main(String[] args) {
          Connection conn=null;
          PreparedStatement st=null;
          try {
              conn = JdbcUtils.getConnection();
              //区别 使用?占位符代替参数
              String sql="INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`) values(?,?,?,?,?)";
              st= conn.prepareStatement(sql);//预编译sql,先写sql,不执行
              //手动给参数赋值
              st.setInt(1,4); //"1"代表上面的第一个?四是值
              st.setString(2,"juanxingcai");
              st.setString(3,"123456");
              st.setString(4,"743003309@qq.com");
              //注意点:sql.Date 数据库  util.Date Java  获得时间戳
              st.setDate(5,new java.sql.Date(new Date().getTime()));
              //执行
              int i = st.executeUpdate();
              if (i>0){
                  System.out.println("插入成功");
              }
          } catch (SQLException e) {
              e.printStackTrace();
          }finally {
              JdbcUtils.release(conn,st,null);
        }
    }
}

 6.IDEA连接数据库

 

 

 

 点击测试如果报错,解决问题

点击下图这个,然后mysql,加号Custon JAR把你之前的jar8.0的包放进去

 

 连接成功后,添加完毕后,选择你需要的数据库

 双击数据库

 提交按钮

 打开sqlyog的界面

 输入sql语言

 

 若有侵权,请联系

标签:JDBC,String,数据库,st,谈谈,sql,null,com
来源: https://www.cnblogs.com/com-Jacob/p/16224873.html