文章目录 一、JDBC简介二、JDBC执行步骤三、执行步骤中类的简介1、DriverManager类2.Connection类3、ResultSet类 一、JDBC简介 什么是jdbc JDBC全称:java databas
什么是jdbc
JDBC全称:java database connectivity,简称jdbc, 翻译就是 Java 数据库连接。
jdbc有什么作用:
是一种标准Java应用编程接口( JAVA api),用来连接 Java 编程语言和广泛的数据库。可以通过jdbc代码实现对数据库的操作。包括DDL,DML,DQL等。
1.导入驱动jar包
链接:https://pan.baidu.com/s/1mP3Nb4wKd1VrBrGmbD3QDg
提取码:t0kh
导入jar包步骤
如果你的lib路径下的jar包有以下小箭头,就添加成功了
2.注册驱动
Class.forName("com.Mysql.jdbc.Driver");
3.获取连接
Connection connection = DriverManager.getConnection(url, username, passWord);
4.定义SQL语句
String sql = "sql语句";
5.获取执行SQl对象
Statement statement = connection.createStatement();
6.执行sql语句
statement.executeUpdate(sql);
7.处理结果
8.释放资源
statement.close();connection.close();
package com.example.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class jdbcdemo { public static void main(String[] args) throws Exception {// 1.注册驱动 Class.forName("com.mysql.jdbc.Driver");// 2.获取连接 String url = "jdbc:mysql://127.0.0.1:3306/dbcsdn"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password);// 3.定义sql语句,这里以创建一个work_user表为例 String sql1 = "use dbcsdn"; String sql2 = "create table work_user(" + "id int(5) primary key auto_increment," + "username varchar(20) unique," + "password varchar(20))";// 4.获取sql对象 Statement statement = connection.createStatement();// 5.执行sql int l1 = statement.executeUpdate(sql1); int l2 = statement.executeUpdate(sql2);// 6.处理结果 System.out.println("sql1受影响条数"+l1); System.out.println("sql2受影响条数"+l2);// 7.释放资源 statement.close(); connection.close(); }}
DriverManager类下面提供的全是静态方法,只需要用类名点方法就可以调用,不需要实例化。它的作用主要有两个:
1.注册驱动: reGISterDriver()
Class.forName("com.mysql.jdbc.Driver");
其中的Driver类里面有一个静态代码块,有一句DriverManager. registerDriver()完成驱动的注册
获取连接:getConnection(url, username, password);
这个方法可以通过mysql的URL地址、数据库用户名、密码获取连接。传入的参数就是对应的URL地址:形如jdbc.mysql://ip地址:端口号/数据库名称。如果是本机连接,IP地址可以写成127.0.0.1或者localhost。如果端口号是默认的3306,可以写成缩写格式:jdbc.mysql:///数据库名
Connection connection = DriverManager.getConnection(url, username, password);
connection类主要有两个作用:一是可以获取执行sql的对象,二是管理事务的功能。我们都知道数据库里面的数据局一旦改变就是永久的,所以需要一个管理事务功能验证sql语句的正确性。在mysql中事务管理通过begin开启事务,rollback回滚事务,commit提交事务。在jdbc里面通过connection类的特定方法也可以实现这三个功能。
获取执行sql的对象用到的方法。
第一个就是普通执行sql对象:connection.createStatement()方法,返回一个Statement对象。
Statement statement = connection.createStatement();
statement类下面有两个对数据进行操作的方法,分别是excuteUpdate(),excuteQuery()。excuteUpdate()这个方法主要是实现DML(操作数据),DDL(操作数据库,操作表)的代码。执行成功之后会返回一个值,这个值就是受影响的行数。但是DDL中就算执行成功之后有可能是0,因为创建一个新的表这样的sql代码受影响行数是0。excuteQuery()主要是实现DQL(查询语句),这个方法会返回一个resultSet对象,这个对象主要用于接受查询到的内容。
演示excuteUpdate()方法。
package com.example.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class jdbcdemo { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://127.0.0.1:3306/dbcsdn"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password); String sql = "insert into work_user values " + "(1,'name1','password1')," + "(2,'name2','password2');"; Statement statement = connection.createStatement(); int i = statement.executeUpdate(sql); System.out.println("受影响的行数是:"+i+"行"); statement.close(); connection.close(); }}
第二个是防止sql注入的prepareStatement()方法,其中传入sql语句,可以防止sql注入,最终返回一个PrepareStatement对象。
jdbc事务管理用法举例
package com.example.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class jdbcdemo { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://127.0.0.1:3306/dbcsdn"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password); String sql1 = "insert into work_user values " + "(5,'name5','password5')," + "(6,'name6','password6');"; String sql2 = "update work_user set username = 'name002' where id = 2;"; Statement statement = connection.createStatement(); try { // 开启事务 connection.setAutoCommit(false); int l1 = statement.executeUpdate(sql1); System.out.println("sql1受影响的行数是:"+l1+"行"); int l2 = statement.executeUpdate(sql2); System.out.println("sql2受影响行数是:"+ l2+ "行"); // 提交事务 connection.commit(); } catch (Exception e) { //回滚事务 connection.rollback(); e.printStackTrace(); } statement.close(); connection.close(); }}
作用:对DQL查询语句进行封装,返回一个resultset对象,并且可以通过特定方法获取查询结果。
对DQL查询语句封装
ResultSet resultSet = statement.executeQuery(sql);
通过特定方法获取查询结果
next()方法。返回Boolean类型,主要用于判断当前行是否有有效数据,若有就返回true,否则返回false。
getXXX()方法。通过resultSet获取数据,对应数据类型定义对应方法。传参可以为字段名,也可以是列对应的编号。
package com.example.jdbc;import java.sql.*;public class jdbcdemo { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://127.0.0.1:3306/dbcsdn"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password); String sql = "select * from work_user"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()){ int id = resultSet.getInt("id"); String name = resultSet.getString("username"); String psd = resultSet.getString("password"); System.out.print("id:"+id+"\t"); System.out.print("username:"+name+"\t"); System.out.println("password:"+psd); System.out.println("---------------"); } resultSet.close(); statement.close(); connection.close(); }}
来源地址:https://blog.csdn.net/chenxingxingxing/article/details/123462544
--结束END--
本文标题: JDBC简介
本文链接: https://www.lsjlt.com/news/376188.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0