首页 > 其他分享 >JDBC初识

JDBC初识

时间:2023-04-20 22:46:27浏览次数:32  
标签:jdbc name resultSet 初识 JDBC edu com public

jdbc连接

DriverManager 驱动程序管理器是负责管理驱动程序的,驱动注册以后,会保存在DriverManager中的已注册列表中后续的处理就可以对这个列表进行操作.

注册驱动方式

1.DriverManager.registerDriver();

2.写代码实现

Class.forName("com.mysql.jdbc.Driver");

利用反射机制

3.com.mysql.jdbc.Driver类中存在静态代码快

源码中自动实现

4.mysql5之后,在jar包中存在一个java.sql.Driver配置文件,文件指定加载com.mysql.cj.jdbc.Driver

通过SPI机制实现。

类加载器、spi 反射技术 javase进阶基础

package com.edu.jou.demo;
import com.mysql.jdbc.Driver;

import java.sql.*;

public class JdbcDemo01 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.导入mysql jar
        //2.注册mysql驱动   jdbc
        //Class.forName("")//反射机制 jdbc 注册驱动/ioc
        Class.forName("com.mysql.jdbc.Driver");
        //3. 创建数据库连接  协议 http  tcp jdbc
        Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hmk_test?serverTimezone=UTC", "root", "sasa");

        //4.获取执行者对象
        Statement statement = connection.createStatement();
        //5.执行自己编写的sql语句
        ResultSet resultSet = statement.executeQuery("select * from hmk_users");
        //6.执行sql语句的结果处理操作
        while(resultSet.next()){
            System.out.println( resultSet.getInt("id") +" "+ resultSet.getString("name") + " " +resultSet.getString("pwd"));

        }
        //7.关闭这些资源
        connection.close();
        statement.close();
    }
}
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
1 hmk 123
2 bilibili hmk2020

jdbc分层架构

数据库中的数据类型需要与db对应 实体类中的 基本数据类型 建议用包装类 默认是为null

分层架构

com.edu.jou.entity---实体类----创建实体类与数据库表结构字段一一对应的

com.edu.jou.dao----数据库访问层----db打交道

com.edu.jou.serivce---业务逻辑层

com.edu.jou.controller---控制层

如果在db数据类型是为varchar 对应 string

如果在db数据类型是为int对应 Integer

executeUpdate----执行insert 、update、delete sql语句

返回影响行数

实体类层

package com.edu.jou.entity;

public class StudentEntity {
    private long id;
    private String name;
    private Integer age;
    private String address;

    public StudentEntity(long id, String name, Integer age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    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 Integer getAge() {
        return age;
    }

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

    public String getAddress() {
        return address;
    }

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

    @Override
    public String toString() {
        return "StudentEntity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

dao层

package com.edu.jou.dao;

import com.edu.jou.entity.StudentEntity;

import java.sql.*;
import java.util.ArrayList;

public class StudentDao {
    public ArrayList<StudentEntity> allStudent() {
        Statement statement = null;
        ResultSet resultSet = null;
        Connection connection = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hmk?serverTimezone=UTC", "root", "sasa");

            statement = connection.createStatement();

            resultSet = statement.executeQuery("select * from hmk_student");

            ArrayList<StudentEntity> StudentEntitys = new ArrayList<>();
            while (resultSet.next()) {
                long id = resultSet.getLong("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String address = resultSet.getString("address");

                StudentEntity studentEntity = new StudentEntity(id, name, age, address);
                StudentEntitys.add(studentEntity);
            }
            return StudentEntitys;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                if (resultSet != null)
                    resultSet.close();
                if (statement != null)
                    statement.close();
                if (connection != null)
                    connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

Service

package com.edu.jou.service;

import com.edu.jou.dao.StudentDao;
import com.edu.jou.entity.StudentEntity;

import java.util.ArrayList;

public class StudentService {
    /**?
     * 查询所有学生的信息
     */

    private StudentDao studentDao = new StudentDao();
    public ArrayList<StudentEntity> allStudent(){
        ArrayList<StudentEntity> studentEntities = studentDao.allStudent();
        //通过业务逻辑层  调用dao层代码
        return studentEntities;
    }
}

test测试类

package com.edu.jou.test;

import com.edu.jou.entity.StudentEntity;
import com.edu.jou.service.StudentService;

import java.util.ArrayList;

public class StudentTest {
    public static void main(String[] args) {
        StudentService studentService = new StudentService();
        ArrayList<StudentEntity> studentEntities = studentService.allStudent();
        for (StudentEntity stu: studentEntities){
            System.out.println(stu.toString());
        }
    }
}

标签:jdbc,name,resultSet,初识,JDBC,edu,com,public
From: https://www.cnblogs.com/hekang520/p/17338603.html

相关文章

  • JDBC--API--Connection
       ......
  • JDBC--API--DriverManager(驱动管理类)
       ......
  • hive 使用JDBC访问 和启动远程端口
      0:hiveservice开启远程访问端口: hive使用jdbc进行访问,要求我们必须开启远程可以访问的端口,其中端口11000是随机的,可以是10002或者别的端口,这设定好好java代码链接时候就要使用开启好的端口。  linuxshell下执行hive--servicehiveserver-p11000>/dev/null2>&1......
  • jdbc insert数据后获取ID
    有时insert数据,数据ID为自动生成,需要获取ID。 以下就是获取ID的方法:publicstaticStringinsertByID(Stringsql,IDataBaseBeanbean,ArrayList<Object>keyvalueList,ArrayList<Class<?>>classtypeList,SingleDataSourcedatasource)throwsSQLException{ Connectionconn=......
  • jdbc 报错 - 索引中丢失 IN 或 OUT 参数:
    jdbc报错-索引中丢失 IN或OUT参数:通常产生这种异常,是因为语句参数类型不一致所导致,如preparedStatement中的参数本应该是int/integer类型,但是设置参数是setString(1,String.valueof(xxx));或是现在流行的hibernate和ibatis的参数类型配置有问题,Integer配置为varchar2了。......
  • C++黑马程序员——P185-188. STL初识
    P185.STL初识——STL的基本概念P186.STL初识——vector存放内置数据类型P187.STL初识——vector存放自定义数据类型P188.STL初识——容器嵌套容器P185.STL的基本概念STL,StandardTemplateLibrary,标准模板库STL:为了提高代码的复用性,提供一套标准的数据结构和算法STL......
  • 03-初识HTML
    title:03-初识HTMLpublish:true编辑器相关前端开发的编辑器软件,我首先推荐VSCode,其次推荐SublimeText。有人说WebStorm也不错?但真实情况是,自从VSCode问世之后,用WebStorm的人越来越少了。PS:文件的后缀名不能决定文件格式,只能决定打开文件打开的方式。VSCode的......
  • DB2 JDBC Driver
    依照JDBC规范,有四种类型的JDBC驱动程序体系结构:Type1:这类驱动程序将JDBCAPI作为到另一个数据访问API的映射来实现,如开放式数据库连通性(OpenDatabaseConnectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC桥驱动程序就是Type1驱动程序的最......
  • jdbc使用(配置版)
    一、创建properties.properties文件连接好数据库点击查看代码driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/demo01username=rootpassword=rootzero=0二、创建DbHelper.java类连接properties.properties文件点击查看代码publicclassDbHelper{......
  • jdbc过程
    点击查看代码publicclassTestQuery{publicstaticvoidmain(String[]args){//1.找驱动try{Class.forName("com.mysql.cj.jdbc.Driver");}catch(ClassNotFoundExceptione){e.printStackTrace();......