jdbc的增删改查_使用jdbc完成数据的增删改查

jdbc的增删改查_使用jdbc完成数据的增删改查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();
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168823.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 上午10:16
下一篇 2022年8月8日 上午10:36


相关推荐

  • 全球单片机的主要厂商和主要型号介绍图_51单片机包括哪些型号

    全球单片机的主要厂商和主要型号介绍图_51单片机包括哪些型号
    全球单片机的主要厂商和主要型号介绍
    PIC单片机: 
      是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片. 
    EMC单片机:
      是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差. 
    ATMEL单片机(51单片机):
    ATME

    2022年10月19日
    5
  • IIS防盗链:ISAPI Rewrite图片防盗链规则写法

    IIS防盗链:ISAPI Rewrite图片防盗链规则写法以下ISAPIRewrite已经在我的服务器上正常运作。经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。详细如下;一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)代码:RewriteCondHost:(.+)RewriteCondReferer:(?!http://\1.*

    2022年7月23日
    7
  • Oracle左连接与右连接区别

    Oracle左连接与右连接区别数据表的连接有 nbsp 1 内连接 自然连接 只有两个表相匹配的行才能在结果集中出现 nbsp 2 外连接 包括 nbsp nbsp nbsp nbsp nbsp nbsp 1 左外连接 左边的表不加限制 nbsp nbsp nbsp nbsp nbsp 2 右外连接 右边的表不加限制 nbsp nbsp nbsp nbsp nbsp 3 全外连接 左右两表都不加限制 nbsp 3 自连接 连接发生在一张基表内 nbsp selecta studentno a studentname b classname nbsp nbsp nbsp nbsp nbsp fromst

    2026年3月17日
    1
  • 使用 Python 程序实现摩斯密码翻译器「建议收藏」

    作者主页:海拥作者简介:CSDN全栈领域优质创作者、HDZ核心组成员、蝉联C站周榜前十粉丝福利:往期获奖记录每周送6~9本书,不定期送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等)摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者SamuelF.B.Morse的名字命名。算法算法非常简单。英语中的每个字符都被一系列“点”和“破折号”代替,或者有时只是单数的“点”或“

    2022年4月14日
    53
  • idea、webStorm怎么使用快捷键复制上一行

    idea、webStorm怎么使用快捷键复制上一行今天用idea写代码时,想要复制一行代码,才发现以前用Eclipse的复制快捷键在Idea中不起作用。————————————————————————————————————————————设置如下:File—>Settings(Ctrl+Alt+s)—>Keymap—>搜索输入(duplicate)—>双击Duplicate Entire Li…

    2022年6月13日
    131
  • ActiveMQ发布订阅模式

    ActiveMQ发布订阅模式Topic 主题发布和订阅消息前面讲的案例都是点对点的消息 即一个生产者发送的一条消息只能被一个消费者消费 然后就移除了 而 topic 模式一条消息可以被多个消费者订阅 关系如下 定义生产者 packagecom dpb topic importjavax jms Connection importjavax jms ConnectionFa importjavax

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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