简介:
JDBC (Java Database Connectivity :Java数据库连接)
概念: 使用Java语言操作关系型数据库的一套API
作用: 同一套Java代码,操作不同的关系型数据库
JDBC就是一套标准接口
基础代码:
// 1.创建工程,导入驱动jar包
// 2.注册驱动 Class.forName("com.mysql.jdbc.Driver");
// 3.获取连接 Connection con=DriverManager.getConnection(url, username, password);
// 4.定义SQL语句 String sql="update ...";
// 5.获取执行SQL对象 Statement stm=con.createStatement();
// 6.执行SQL语句 stm.executeUpdate(sql);
//可以返回一个受影响的行数
int cnt=stm.executeUpdate(sql);
// 7.处理返回结果
//System.out.println(cnt);
// 8.释放资源
stm.close();
con.Close();
API 详解
1.DriverManager (驱动管理类):
1.)注册驱动
2.)获取数据库连接
getConnection(String url, String user, String pwd)
* url : 连接路径
语法:jdbc:mysql://ip地址:端口号/数据库名
示例:jdbc:mysql://127.0.0.1:3306/db
(如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名)
2.Connection (数据库连接对象):
1.)获取执行SQL的对象
* 普通执行SQL对象
Statement createStatement()
* 预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement(sql)
* 执行存储过程的对象
CallableStatement prepareCall(sql)
2.)事务管理
* Mysql 事务管理 (MySQL默认自动提交事务)
开启事务:BEGIN; / START TRANSACTION;
提交事务:COMMIT;
回滚事务:ROLLBACK;
* JDBC事务管理 (Connection接口中定义了3个对应的方法)
开启事务:setAutoCommit (boolean autoCommit) : true为自动提交事务,false为手动提交事务
提交事务:commit()
回滚事务:rollback()
try{ //开启事务 con.setAutoCommit(false); int cnt1=stm.executeUpdate(sql1); System.out.println(cnt1); int cnt2=stm.executeUpdate(sql2); Syatem.out.println(cnt2); //提交事务 con.commit(); }catch (Exception throwables) { //回滚事务 con.rollback(); throwables.printStackTrace(); }
3.Statement (执行SQL语句) :
* int executeUpdate (sql) : 执行DML、DDL语句
返回值:(1)执行DML语句后,返回影响的行数
(2) 执行DDL语句后,执行成功也可能返回0
* ResultSet executeQuery (sql)
返回值: 执行DQL语句后,返回ResultSet结果集对象
4.ResultSet (结果集对象) :
boolean next() : 判断当前行是否有效
xxx getXxx(参数) : 获取数据
ResultSet rs=stm.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); }
5.PreparedStatement (预编译SQL语句并执行,预防SQL注入) :
关于SQL注入:通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
// 1.获取PreparedStatement对象 String sql="select * from table where username=? and password=?"; PreparedStatement pst=con.prepareStatement(sql); // 2.设置参数值 pst.setString(1,"root"); pst.setString(2,"123456"); // 3.执行SQL executeUpdate(); //或者 executeQuery(); //不需要再传递sql
标签:语句,JDBC,stm,SQL,学习,sql,执行,con From: https://www.cnblogs.com/ztCoding/p/18198875