ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

谈谈JDBC

2022-05-06 08:31:06  阅读:154  来源: 互联网

标签:JDBC String 数据库 st 谈谈 sql null com


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有