首页 > 数据库 >2024/10/19日 日志--》关于MySQL中 JDBC的API 详解的整理简述

2024/10/19日 日志--》关于MySQL中 JDBC的API 详解的整理简述

时间:2024-10-19 20:00:27浏览次数:1  
标签:语句 10 JDBC SQL -- sql 参数 mysql

今天进一步学习了JDBC中的API,已经可以初步连接数据库了,接下来继续进行学习。

点击查看代码
-- JDBC API详解
-- DirverManager 
-- DriverManager(驱动管理类)作用: 1.注册驱动 2.获取数据库连接
-- 1.注册驱动
-- Class.forName("com.mysql.jdbc.Driver");
-- ·需要注意的是:MySQL 5之后的驱动包,可以省略注册驱动步骤
-- ·自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类
-- 2.获取连接
-- static Connection    getConnection(String url,String user,String password);
-- ·参数
-- 1.url:连接路径
-- 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2...
-- 示例:jdbc:mysql://127.0.0.1:3306/test
-- 细节:
-- ·如果连接的事本机mysql服务器,并且mysql服务默认端口是3306,
-- 则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
-- ·配置 useSSL=false 参数,禁用安全连接方式,解决警告提示 
-- 2.user:用户名 
-- 3.password:密码
-- 
-- Connection 
-- Connection(数据库连接对象)作用: 1.获取执行SQL的对象 2.管理事务 
-- 1.获取执行SQL对象
-- ·普通执行SQL对象 
-- Statement     createStatement();
-- ·预编译SQL的执行SQL对象:防止SQL注入
-- PreparedStatement prepareStatement(sql);
-- ·执行存储过程的对象
-- CallableStatement prepareCall(sql)
-- 2.事务管理
-- ·  MySQL事务管理
-- 开启事务: BEGIN;/START TRANSACTION;
-- 提交事务: COMMIT;
-- 回滚事务: ROLLBACK;
-- MySQL默认自动提交事务
-- ·  JDBC事务管理:Connection接口中定义了3个对应的方法
-- 开启事务: setAutoCommit(boolean autoCommit); true为自动提交事务 false为手动提交事务,即为开启事务
-- 提交事务: commit();
-- 回滚事务: rollback(); 
-- 
-- Statement 
-- Statement作用: 1.执行SQL语句
-- ·执行SQL语句
-- int     executeUpdate(sql): 执行DML(对数据增删改)、DDL(操作数据库、表)语句
-- 返回值:(1)DML语句影响的行数 (2)DDL语句执行后,执行成功也可能返回0
-- ResultSet     executeQuery(sql):执行DQL(对表中数据查询)语句
-- 返回值:ResultSet结果集对象
-- 
-- ResultSet
-- ·Result(结果集对象)作用:
-- 1.封装了DQL查询语句的结果
-- ResultSet     stmt.executeQuery(sql);执行DQL语句,返回ResultSet对象
-- ·获取查询结果
-- Boolean     next(); (1)将光标从当前位置向前移动一行 (2)	判断当前行是否为有效行
-- 返回值:
-- · true:有效行,当前行有数据
-- · false:无效行,当前行没有数据
-- xxx     getXxx(参数);获取数据
-- xxx:数据类型。如: int getint(参数); String getString(参数);
-- 参数:
-- · int: 列的编号,从1开始
-- · String: 列的名称
-- ·使用步骤:
--    1.游标向下移动一行,并判断该行是否有数据:next();
--    2.获取数据:getXxx(参数);
-- //循环判断游标是否是最后一行
-- while(rs.next()){
-- 	//获取数据
-- 	rs.getXxx(参数;
-- }
-- 注意最后释放资源时ResultSet类型的变量也要释放 如 rs.close();
--
-- PreparedStatement
-- · PreparedStatement 作用:
-- 1.预编译SQL语句并执行:预防SQL注入问题
-- · SQL注入
-- 		·SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法
-- 	如:'+'1'=1'  
-- ·1.获取 PreparedStatement 对象
-- //SQL语句中的参数值,使用?占位符替代
-- String sql "select * from user where username = ? and password = ?";
-- //通过Connection对象获取,并传入对应的sql语句
-- PreparedStatement pstmt = conn.prepareStatement(sql);
-- ·2.设置参数值
-- PreparedStatement对象:setXxx(参数1,参数2):?赋值
-- Xxx:数据类型;如setInt(参数1,参数2)
-- 参数:
-- ·   参数1:?的位置编号,从 1 开始
-- ·   参数2:?的值
-- ·3.执行SQL
-- executeUpdate(); /executeQuery();不需要再传递sql 如:pstmt.executeQuery();
-- 
-- PrepardStatement 原理
-- · PrepardStatement 好处:
-- 1. 预编译SQL,性能更高
-- 2. 防止SQL注入: 将敏感字符进行转义
-- ·1 PreparedStatement 预编译功能开启:   useServerPrepStmts=TRUE
--  示例:String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false&useServerPrepStmts=true";
-- ·2 配置MySQL执行日志(重启mysql服务后生效)
-- log-output=FILE
-- general-log=1
-- general_log_file="D:\mysql.log"
-- slow-query-log=1
-- slow_query_log_file="D:\mysql_slow.log"
-- long_query_time=2
-- · PreparedStatement原理:
-- 1. 获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)
-- 2. 执行时就不用再进行这些步骤了,速度更快
-- 3. 如果sql模板一样,则只需要进行一次检查、编译
-- 	

标签:语句,10,JDBC,SQL,--,sql,参数,mysql
From: https://www.cnblogs.com/MoonbeamsC/p/18486453

相关文章

  • Inno Setup 下载/设置中文
    官网下载:Download进入InnoSetup的安装目录,复制Default.isl文件备份,更改其内容:;***InnoSetupversion6.1.0+ChineseSimplifiedmessages***;;Todownloaduser-contributedtranslationsofthisfile,goto:;https://jrsoftware.org/files/istrans/;;N......
  • php网站用什么修改数据库文件格式
    在PHP网站中修改数据库文件格式通常涉及以下几个步骤或工具:使用PHP脚本直接操作数据库:利用PHP的数据库扩展(如PDO,MySQLi)来执行SQL语句,实现数据表结构的修改。示例代码使用PDO修改表结构:<?php$dsn='mysql:host=localhost;dbname=testdb';$username='root';$passw......
  • php网站用什么修改数据库文件
    在PHP网站中修改数据库文件通常涉及以下几个步骤或工具:PHP代码直接操作:使用PHP内置的数据库扩展,如mysqli或PDO,来执行SQL查询,实现对数据库的增删改查操作。示例使用PDO连接MySQL数据库并更新数据:<?php$dsn='mysql:host=localhost;dbname=testdb';$username='root';......
  • koa2 入门(1)koa-generator 脚手架和 mongoose 使用
    koa2入门(1)koa-generator脚手架和mongoose使用 项目地址:https://github.com/caochangkui/demo/tree/koa2-learn1构建项目1.1安装koa-generator$npminstall-gkoa-generator1.2使用koa-generator生成koa2项目$koa2-eproject(项目名称)(-e代表使用模板引......
  • php 中的注释类型
    php中的注释类型php支持三种类型的注释:单行注释单行注释用于注释掉代码中的单行或部分行。您可以使用//或#来表示单行注释。多行注释多行注释,也称为块注释,用于注释掉多行代码。它们以/*开头,以*/结尾。当您需要暂时禁用大块代码或编写更长的解释时,这种类型的注......
  • GJ Round
    前言:GJRound为学校内部模拟赛记7.13为Round1,在此之前的模拟赛较为混乱以后再说(可能记为Round0或者负数)目前正在倒序更新https://www.luogu.com.cn/article/a30ffmdbRound20(9.18)A......
  • 大健康零售电商AI知识库:优化用户体验的新引擎
    在当今的数字化时代,大健康零售电商行业正以前所未有的速度蓬勃发展。随着消费者对健康产品需求的日益增长,如何提升用户体验,成为了大健康零售电商平台的核心竞争力之一。在这个过程中,AI知识库作为连接产品与消费者的桥梁,正逐渐展现出其在优化用户体验方面的巨大潜力。一、用......
  • 企业AI助理与知识库管理系统:重塑企业知识管理的新篇章
    在数字化转型的浪潮中,企业正面临着前所未有的机遇与挑战。如何高效管理、快速获取并利用企业内部的知识资源,成为了提升企业竞争力的关键。近年来,企业AI助理与知识库管理系统的结合,正逐步成为企业知识管理的新趋势,为企业的知识共享、创新和发展注入了新的活力。本文将深入探......
  • [数据结构]进制转换
    要求实现函数,借助如下自定义栈seqstack将一个正整数n转换为$$进制数并输出。输出时用大写字母A、B、C、D、E、F分别表示10、11、12、13、14、15。#include<iostream>#defineMAXSIZE100usingnamespacestd;typedefstruct{intdata[MAXSIZE];inttop;}seqs......
  • 外包干了2个月,技术明显退步
    回望过去,我是一名普通的本科生,于2019年通过校招有幸加入了南京某知名软件公司。那时的我,满怀着对未来的憧憬和热情,投入到了功能测试的岗位中。日复一日,年复一年,转眼间,我已经在这个岗位上度过了接近两年的时光。然而,随着时间的推移,我逐渐发现,这份看似稳定的工作,其实正在悄然吞......