JDBC_1原理及增刪改查「建议收藏」

JDBC_1原理及增刪改查「建议收藏」JBDC数据的持久化:把数据保存到磁盘上。JDBC是java访问数据库的基石,JDO,Hibernate,Mybatis等都是基于JDBCJDBC是一个独立于特定数据库的管理系统,通用的SQL数据库存取和操作的公共接口配置文件:jdbc.propertiesuser=rootpassword=abc123url=jdbc:mysql://localhost:3306/testdriverClass=com.mysql.jdbc.Driver获取Connectionpublic s

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

JBDC


数据的持久化:把数据保存到磁盘上。
JDBC是java访问数据库的基石,JDO,Hibernate,Mybatis等都是基于JDBC
JDBC是一个独立于特定数据库的管理系统,通用的SQL数据库存取和操作的公共接口
在这里插入图片描述
在这里插入图片描述
配置文件:jdbc.properties

user=root
password=abc123
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

获取Connection

public static void main(String[] args) throws Exception { 
   
        //方式一
        Driver driver = new com.mysql.jdbc.Driver();
        String url = "jdbc:mysql://localhost1:3306/test";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","123456");
        Connection connect = driver.connect(url, info);


        //方式二:反射实现获取驱动对象 不用出现第三方的类
        Class clazz = Class.forName("com.mysql.jdbc.Driver");
        //权限要够
        Driver driver1 = (Driver) clazz.newInstance();


        //方式三:使用DriverManager替换Driver
        //获取驱动实现类对象
        Class clazz1 = Class.forName("com.mysql.jdbc.Driver");
        Driver driver2 = (Driver) clazz1.newInstance();
        String url1 = "jdbc:mysql://localhost1:3306/test";
        String user1 = "root";
        String password1 = "123456";
        //注册驱动
        DriverManager.registerDriver(driver2);
        //获取连接
        Connection connection = DriverManager.getConnection(url, user1, password1);
        System.out.println(connection);


        //方式4:优化方式四
        Class.forName("com.mysql.jdbc.Driver");
        //注册驱动
        DriverManager.registerDriver(driver2);
        //获取连接
        Connection connection1 = DriverManager.getConnection(url, user1, password1);
        System.out.println(connection1);

        //方式5:读取配置文件
        InputStream resourceAsStream = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url2 = properties.getProperty("url");
        String driverClass = properties.getProperty("driverClass");
        Class.forName(driverClass);
        Connection connection2 = DriverManager.getConnection(url, user, password);

    }

操作和访问数据库

在这里插入图片描述
PrepareStatement相比Statement能够解决SQL注入,拼串,能操作Blob数据,实现更高效的批量操作,

添加

public static void main(String[] args) throws Exception{ 
   
        InputStream resourceAsStream = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driverClass = properties.getProperty("driverClass");
        Class.forName(driverClass);
        Connection connection = DriverManager.getConnection(url, user, password);
        
        //添加数据
        //预编译sql语句,PreparedStatement实例
        String sql = "insert into customers(name,email,birth) values(?,?,?)";
        java.sql.PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //填充占位符
        preparedStatement.setString(1,"哪吒");
        preparedStatement.setString(2,"nezha@gmail.com");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse("1000-01-01");
        preparedStatement.setDate(3, (java.sql.Date) new Date(date.getTime()));
        //执行sql
        preparedStatement.execute();
        preparedStatement.close();
        connection.close();
    }

修改

        //预编译sql语句,PreparedStatement实例
        String sql = "update customers set name = ? where id = ?";
        java.sql.PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //填充占位符
        preparedStatement.setString(1,"莫扎特");
        preparedStatement.setObject(2,28);
        //执行sql
        preparedStatement.execute();
        preparedStatement.close();
        connection.close();

查找

//预编译sql语句,PreparedStatement实例
        String sql = "select id,name,email,birth from customers where id = ?";
        java.sql.PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //填充占位符

        //执行sql
        ResultSet resultSet = preparedStatement.executeQuery();
        //获取结果集的元数据:ResultSetMetaData
        ResultSetMetaData rsmd = preparedStatement.getMetaData();
        int columnCount = rsmd.getColumnCount();
        while (resultSet.next()){ 
   
            Customer cust = new Customer();
            for(int i = 0;i < columnCount;i ++){ 
   
                Object object = resultSet.getObject(i + 1);

                //获取每个列的列明
                String columnName = rsmd.getColumnName(i + 1);

                Field declaredField = Customer.class.getDeclaredField(columnName);
                declaredField.setAccessible(true);
                declaredField.set(cust,object);
            }
        }

        preparedStatement.close();
        connection.close();
        resultSet.close();
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168965.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 静态方法只能通过类名进行调用_java非静态方法可以调用静态方法吗

    静态方法只能通过类名进行调用_java非静态方法可以调用静态方法吗静态方法调用的三种方式:1、newxx().静态();//使用对象调用,不推荐2、xx.静态();//类名调用,正规调用方法,推荐3、静态();//本类的静态方法在本类调用,直接调用欢迎各位在评论区留言探讨…

    2022年10月28日
  • 关于stm32的智能车硬件设计_stm32小车前进程序

    关于stm32的智能车硬件设计_stm32小车前进程序目录1.硬件整体逻辑二级目录三级目录1.硬件整体逻辑二级目录三级目录

    2022年10月10日
  • linux如何卸载jdk版本并重装_centos卸载jdk

    linux如何卸载jdk版本并重装_centos卸载jdklinuxcentos7自带了openjdk,这个版本的jdk是缺少一部分功能的,最好重新安装oraclejdk。但在没有卸载openjdk就安装oraclejdk时,部分依赖包装不上,后期程序运行时会出现问题。以下为卸载jdk的步骤(openjdk或oraclejdk)和安装步骤。#1.查看目前系统中包含的jdk版本rpm-qa|grepjdk#2.得到的结果如下:java-1.8.0-openjdk-1.8.0.322.b06-1.e

  • linux 命令chmod 755的意思[通俗易懂]

    linux 命令chmod 755的意思[通俗易懂]chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。 一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同属一个用户组的其他用户的权限第三个数字表示其它用户组的权限。      权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(…

  • pycharm使用技巧及常用快捷键_常用快捷键大全图片

    pycharm使用技巧及常用快捷键_常用快捷键大全图片Pycharm常用快捷键1、编辑(Editing)Ctrl+Space基本的代码完成(类、方法、属性)Ctrl+Alt+Space快速导入任意类Ctrl+Shift+Enter语句完成Ctrl+P参数信息(在方法中调用参数)Ctrl+Q快速查看文档F1外部文档Shift+F1外部文档,进入web文档主页Ctrl+Shift+Z–>Redo重做Ctrl+鼠标简介/进入代码定义Ctrl+F1显示错误描述或警告.

  • 关于kindeditor中如何设置富文本编辑器中的内容

    关于kindeditor中如何设置富文本编辑器中的内容关于kindeditor中如何设置富文本编辑器中的内容KindEditor.html(id,value);我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;增加了…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号