【Java】JDBC的使用

这篇具有很好参考价值的文章主要介绍了【Java】JDBC的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JDBC

package jdbc_demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class jdbc {
    public static void main(String[] args)throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123";

        Connection conn=DriverManager.getConnection(url,username,password);

        //3.定义sql
        String sql ="update account set money = 3000 where id=1";

        //4.获取执行sql的对象Statement
        Statement stmt = conn.createStatement();

        //5.执行sql
        int count = stmt.executeUpdate(sql);//返回受影响的行数

        //6.处理结果
        System.out.println("受影响"+count+"行");

        //7.释放资源
        stmt.close();
        conn.close();

    }
}

【Java】JDBC的使用,JDBC,java,android,开发语言

【Java】JDBC的使用,JDBC,java,android,开发语言

数据修改成功。

DriverManager

Driver Manager的作用:

  1. 注册驱动

  2. 获取数据库连接

【Java】JDBC的使用,JDBC,java,android,开发语言

静态代码块会进行注册驱动。

【Java】JDBC的使用,JDBC,java,android,开发语言

不使用SSL

jdbc:mysql:///db1?useSSL=false

Connection

Connection作用:

  1. 获取执行SQL的对象

  2. 管理事务

  1. 获取执行SQL的对象

    • 普通执行SQL对象
    Statement createStatement()
    
    • 预编译SQL的执行SQL对象:防止SQL注入
    PreparedStatement prepareStatement(sql)
    
    • 执行存储过程的对象
    CallableStatement prepareCall(sql)
    
  2. 事务管理

    • MySQL事务管理

    【Java】JDBC的使用,JDBC,java,android,开发语言

    • JDBC事务管理

    开启事务:setAutoCommit(boolean autoCommit):true; true为自动提交事务,false为手动提交事务,也就是开启事务

    提交事务:commit()

    回滚事务:rollback()

    package jdbc_demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class jdbc {
        public static void main(String[] args)throws Exception {
            //1.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
    
            //2.获取连接
            String url="jdbc:mysql://127.0.0.1:3306/test";
            String username="root";
            String password="123";
    
            Connection conn=DriverManager.getConnection(url,username,password);
            conn.setAutoCommit(false);
            //3.定义sql
            String sql1 ="update account set money = 3000 where id=1";
            String sql2 ="update account set money = 3000 where id=2";
            //4.获取执行sql的对象Statement
            Statement stmt = conn.createStatement();
            //5.执行sql
    
            int count1 = 0;//返回受影响的行数
            int count2 = 0;
            try {
                count1 = stmt.executeUpdate(sql1);
                count2 = stmt.executeUpdate(sql2);
                //都执行完毕了,就提交事务
                conn.commit();
            } catch (Exception e) {
                conn.rollback();
                throw new RuntimeException(e);
            }
    
            //6.处理结果
            System.out.println("受影响"+count1+"行");
            System.out.println("受影响"+count2+"行");
    
            //7.释放资源
            stmt.close();
            conn.close();
    
        }
    }
    

    【Java】JDBC的使用,JDBC,java,android,开发语言

Statement

【Java】JDBC的使用,JDBC,java,android,开发语言

ResultSet

【Java】JDBC的使用,JDBC,java,android,开发语言

while(rs.next())//光标移动到下一行,并且判断当前行数据是否有效
{
	//获取数据
	rs.getXxx(参数);
}
package jdbc_demo;

import java.sql.*;

public class jdbc {
    public static void main(String[] args)throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123";

        Connection conn=DriverManager.getConnection(url,username,password);
        conn.setAutoCommit(false);
        //3.定义sql
        String sql="select * from account";
        //4.获取Statement对象
        Statement stmt = conn.createStatement();
        //执行sql语句
        ResultSet rs=stmt.executeQuery(sql);

        while(rs.next()){
            int id=rs.getInt(1);
            String name=rs.getString(2);
            double money =rs.getDouble(3);

            System.out.println(id);
            System.out.println(name);
            System.out.println(money);
            System.out.println("--------------------");
        }


        //7.释放资源
        stmt.close();
        conn.close();

    }
}

需求:查询account账户表数据,封装为Account对象中,并且存储到ArrayList集合当中。

package jdbc_demo;

import pojo.Account;

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

public class jdbc {
    public static void main(String[] args)throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2.获取连接
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123";

        Connection conn=DriverManager.getConnection(url,username,password);
        conn.setAutoCommit(false);
        //3.定义sql
        String sql="select * from account";
        //4.获取Statement对象
        Statement stmt = conn.createStatement();
        //执行sql语句
        ResultSet rs=stmt.executeQuery(sql);

        //创建集合
        List<Account> list=new ArrayList<>();
        while(rs.next()){
            Account account=new Account();

            int id=rs.getInt(1);
            String name=rs.getString(2);
            double money =rs.getDouble(3);

            account.setId(id);
            account.setName(name);
            account.setMoney(money);
            list.add(account);
        }
        System.out.println(list);
        //7.释放资源
        stmt.close();
        conn.close();
    }
}

PreparedStatement

PreparedStatement可以在预编译阶段预防SQL注入问题。

    public void testLogin_Inject() throws SQLException {
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123";
        Connection conn=DriverManager.getConnection(url,username,password);

        //接收用户输入 用户名和密码
        String name="张三";
        String pwd="123456";
        String sql ="select * from user where username='"+name+"'and password='"+pwd+"'";
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery(sql);

        if(rs.next()){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
    }
public void testLogin_Inject() throws SQLException {
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123";
        Connection conn=DriverManager.getConnection(url,username,password);

        //接收用户输入 用户名和密码
        String name="张三";
        String pwd="'or'1'='1";
        String sql ="select * from user where username='"+name+"'and password='"+pwd+"'";
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery(sql);

        if(rs.next()){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
    }

【Java】JDBC的使用,JDBC,java,android,开发语言

为什么可以登录成功?分析一下sql语句

select * from user where username='张三'and password=''or'1'='1'

前半段无论正确与否,后半段的1=1永远成立,又是or连接符,自然查询成功了。

如何解决?

【Java】JDBC的使用,JDBC,java,android,开发语言

package jdbc_demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class PreparedStatement {
    public static void main(String[] args)throws Exception {
        String url="jdbc:mysql://127.0.0.1:3306/test";
        String username="root";
        String password="123456";
        String name="张三";
        String pwd="'or'1'='1";
        Connection conn= DriverManager.getConnection(url,username,password);

        // 修复了 SQL 语句中的问题
        String sql ="select * from user where username=? and password=?";

        java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1,name);
        pstmt.setString(2,pwd);

        //执行sql
        ResultSet rst=pstmt.executeQuery();
        if(rst.next()){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
    }
}

【Java】JDBC的使用,JDBC,java,android,开发语言文章来源地址https://www.toymoban.com/news/detail-807966.html

到了这里,关于【Java】JDBC的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于开源的JAVA mongodb jdbc 驱动 使用教程

    基于开源的JAVA mongodb jdbc 驱动 使用教程介绍 本文介绍一款开源的基于JAVA的 Mongodb JDBC 驱动使用教程 与mybaits融合:复用mybatis的功能特性,如:缓存,if动态判断标签等特性 开发更加便捷: 统一dao层,使代码更具维护性,同时操作mongodb 便捷 产品融合能力: 作为底层组件,可以与BI、

    2024年02月04日
    浏览(25)
  • JSP在线小说系统用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 在线小说系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP在线小说系统用eclipse定制开发mysql数据库

    2024年02月12日
    浏览(35)
  • JSP网上手机商城系统 用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 网上手机商城系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP网上手机商城系统 用eclipse定

    2024年02月13日
    浏览(36)
  • Java与数据库:JDBC和ORM框架的使用和效率优化

      随着互联网的快速发展和大数据时代的到来,数据库在软件开发中起到了至关重要的作用。Java作为一门强大而广泛应用的编程语言,提供了多种与数据库交互的方式。其中,JDBC和ORM框架是最常用的两种方式。本文将深入探讨JDBC和ORM框架的使用方法,并分享一些提高效率的

    2024年02月08日
    浏览(30)
  • java项目使用log4jdbc打印sql日志

    场景: 项目开发中,为了方便调试和排查问题,需要打印sql日志,并且显示sql中占位符所代表的参数; 第一种:如果只需简单打印sql日志【一般使用】 第二种:需要打印详细的sql日志【建议使用】 第一步:导入maven依赖 第二步:修改yml配置文件 第三步:启动项目后执行s

    2024年02月12日
    浏览(29)
  • MySQL中 java 的 JDBC 编程使用方法及驱动包的下载和使用

    实际开发中要绝大多数要 通过代码 来执行 sql 语句,这就需要让其他的编程语言来操作数据库服务器。 API 是什么意思: 例子:某个东西可以带给我某个功能。 例子:我可以和我的朋友一起吃法、一起学习、一起打游戏。 例如 java 的标准库就会给我们提供一些 API ,这个

    2024年02月04日
    浏览(33)
  • JSP网上订餐管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP网上订餐管理系统用eclipse定

    2024年02月12日
    浏览(33)
  • 【Java】IntelliJ IDEA使用JDBC连接MySQL数据库并写入数据

    在 IntelliJ IDEA 中连接 MySQL 数据库并将数据存储在数据表中,使用 Java 和 JDBC(Java Database Connectivity)实现。 下载并安装 IntelliJ IDEA 下载并安装 MySQL 数据库 下载 MySQL Connector/J 驱动程序(JDBC 驱动程序) 使用 Navicat 创建一个 MySQL 数据库 打开 IntelliJ IDEA。 选择 \\\"File\\\"→ “New” →

    2024年02月05日
    浏览(58)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(35)
  • android studio没有java语言选项怎么办

    我的android studio没有java语言选项怎么办。我打算用java来做一个android应用,但是好像没有看到有java选项,我这个是ubuntu系统 其实运气可能是太好了点。应为你会发现,随便选一个都会有java选项,唯独empty那个没有java,然后我就选到了那个,所以解决的办法就是选择其他选项

    2024年03月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包