JDBC_入门及注入问题
2024-09-22 05:18:39
.JDBC基本概念: java database Connectivity java数据库连接,java语言操作数据库 本质: 官方定义的一套操作所有关系型数据库的规则,即接口。 各个数据库厂商实现这套接口,提供数据库驱动jar包。 我们是以这套接口编程,真正执行的代码是驱动jar包中的实现类 .快速入门: 步骤: .导入驱动jar包 .注册驱动 Class. .获取数据库连接对象 Connection .定义sql .获取执行sql语句的对象 Statement .执行sql,接收返回结果 .处理结果 .释放资源 .JDBC各个接口和类的详解: .DriverManager:驱动管理对象 功能: .注册驱动: Class.forName("com.mysql.jdbc.Driver"); mysql5之后驱动jar包可以省略注册驱动的步骤 .获取数据库连接 static Connection getConnection(String url, String user, String password) 参数: url:指定连接的路径 jdbc:mysql://ip地址(域名):端口号/数据库名称 user:用户名 password:密码 .connection: 数据库连接对象 .功能: .获取执行sql的对象 Statement createStatement() PreparedStatement prepareStatement(String sql) .管理事务: 开启事务:void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务 提交事务:void commit() 回滚事务:void rollback() .statement: 指定sql的对象 .boolean execute(String sql):可以执行任意sql 了解 .int executeUpdate(String sql):执行DML(insert update delete)语句、DDL(create alter drop)语句 .ResultSet executeQuery(String sql):执行DML(insert update delete)语句、DDL(create alter drop)语句 返回值:影响的行数 .ResultSet:结果集对象 .boolean next():游标向下移动一行 .getXxx():获取数据 Xxx:数据类型 .getXxx(参数): int:列的编号从1开始 String:列名称 注意: 使用步骤: .游标向下移动一行 .判断是否有数据 使用next的返回值判断 .获取数据 .PreparedStatement:执行sql的对象 .SQL注入问题:在拼接sql时有一些sql特殊关键字参与拼接回造成安全性问题 .输入用户名随意,输入密码:a' or 'a' = 'a .解决sql注入问题:使用PreparedStatement对象来解决 .预编译的sql:参数使用?作为占位符 .步骤: .写sql语句使用占位符 .Connection.prepareStatement(String sql) .给?赋值:.setXxx(参数1,参数2) 参数1:?的位置 参数2:?的值 .执行sql不需要参数 */ import java.sql.*; public class JDBC_Test01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { .注册驱动 Class.forName("com.mysql.jdbc.Driver"); .获取数据库连接对象 Connection Connection connection /day01","root","ROOT"); .定义sql String sql = "show tables"; .获取执行sql语句的对象 Statement Statement statement = connection.createStatement(); .执行sql,接收返回结果 int count = statement.executeUpdate(sql); .处理结果 System.out.println(count); .释放资源 connection.close();
最新文章
- 用CSS3动画特效实现弹窗效果
- linux 环境变量PATH路径的三种方法
- sqlsevrer中output的用法
- NOIP2007 统计数字
- SQL server语句测试
- SMBUS(IIC)总线
- Android 开发中关于layoutinflater
- Image的Stride
- 解决Win7&;Win8 64位下Source Insight提示未完整安装的问题
- python3之正则表达式
- procemon
- Haystack
- 【app】自动化必备之adb使用
- bootstrap4简单使用和入门01-简单表单的使用
- C# 使用EPPlus 秒导出10万条数据
- csp20170304地铁修建_Solution
- 论文阅读: End-to-end Learning of Action Detection from Frame Glimpses in Videos
- 【springBoot】之配置文件application
- Leetcode(力扣) 整数反转
- Gnucash数据库结构