JDBC复习
JDBC复习
了解JDBC
-
什么是JDBC?JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。
-
使用JDBC的好处:
-
个数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发;
-
Java程序编译期仅依赖java.sql包,不依赖具体数据库的jar包;
-
可随时替换底层数据库,访问数据库的Java代码基本不变。
-
JDBC连接
-
Connection代表一个JDBC连接,它相当于Java程序到数据库的连接。打开一个Connection时,需要准备URL、用户名和口令(即访问密码),才能成功连接到数据库。
String url = "jdbc:mysql://locahost:3306/"; String username = "数据库名"; String password = "数据库密码"; //获取连接 Connection conn = DriverManager.getConnection(url,username,password);
-
核心代码是DriverManager提供的静态方法getConnection()。DriverManager会自动扫描classpath,找到所有JDBC驱动,然后根据我们传入的URL自动挑选一个合适的驱动。
-
-
Connection
-
功能:
-
获取执行sql的对象
-
Statement createStatement();
-
PreparedStatement ps(String sql);
-
-
管理事务
-
开启事务:setAutoCommit(boolean autoCommit); --调用该方法设置参数为false,即开启事务。
-
提交事务:commit();
-
回滚事务:rollback();
-
-
-
-
Statement:执行sql的对象。
-
boolean execute(String sql); --可以执行任意的sql(了解)
-
int executeUpdate(String sql); --执行DML(insert,update,delete)语句、DDL(creat,alter,drop)语句。
-
返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功,返回值 > 0 的则执行成功,反之则失败。
-
-
ResultSet executeQuery(String sql); --执行DQL(select)语句。
-
-
ResultSet:结果集对象,封装查询结果。
-
boolean next():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true.
-
while(rs.next()){ //取出数据 }
-
-
PerparedStatement:执行sql对象。
-
获取sql语句的对象 PreparedStatement Connection.prepareStatement(String sql);
-
Connection conn = null; PreparedStatement ps = null; //初始化sql语句 ps = conn.preparenStatement(sql);
-
总结
-
接口:
-
Connection:特定数据库的连接。在连接上下文中执行SQL语句并返回结果。
-
PreparedStatement:表示预编译的SQL语句对象。
-
Statement:用于执行静态SQL语句并返回它所生成结果的对象。
-
ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
-
CallableStatement:用于执行SQL存储过程的接口。
-
-
Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myself?serverTimezone=GMT%2B8","root","0826"); String sql = "select name from t_user where name=?"; ps = conn.prepareStatement(sql); ps.setString(1,username); rs = ps.executeQuery(); if(rs.next()){ //光标向前移动一位 //条件成立表示光标指向的行有记录 //getString()这个方法不管底层数据库表中是什么类型,统一都以String形式返回 //也可以以特定类型取出,修改get后面的数据类型就行了。 //建议括号里面填写查询结果名,比较健壮。 rs.getString(); String id = rs.getString(1); //取当前行第二个数据 String name = rs.getString(2); System.out.println(id + "," + name); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); }finally { if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(ps != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }
- 点赞
- 收藏
- 关注作者
评论(0)