一、详解每一个类和接口
1、DriverManager(类)
相关方法
【1】注册驱动
Class.forName("com.mysql.jdbc.Driver");
注意事项:
Drive中有静态代码块,在静态代码块中注册了mysql驱动----->DriverManager.registerDriver(new Driver());
mysql5.5之后可以省略不写此段代码,默认去META-INF/services/java.sql.Driver文件中去第一行代码
【2】获取数据库连接方法
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
注意事项:
【1】中文乱码问题:在后面加上参数:characterEncodeing=UTF-8
【2】url的简写
jdbc:mysql:///db1
这里省略的是:127.0.0.1 端口号默认3306
2、Connection(接口)
相关方法
【1】获取数据库语句的执行对象
Statement createStatement()
创建一个Statement对象来将Sql语句发送数据库中
【2】在JDBC中,事务是由Connection接口管理的(面试题)
事务的三大操作:
开启事务:
mysql:start transaction
Connection: void setAutoCommit(boolean autoCommit)
提交操作:
相同
回滚操作:
相同
3、Statement接口
相关方法
【1】int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
【2】ResultSet executeQuery(String sql)
执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
4、ResultSet
功能:表示数据库结果集的数据表,通常通过执行查询数据表的语句生成
相关方法:
【1】获取行的方法
boolean next() 将光标从当前位置向前移一行
【2】确定列的方法
getXxx(列号或列名)
【3】释放resultset资源
二、使用try/catch的方式处理异常
public class Demo3 {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1", "root", "123456");
statement = connection.createStatement();
String sql = "insert into stu values(1,'zhangsan',13)";
int i = statement.executeUpdate(sql);
System.out.println(i);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
try {
if (null != statement) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (null != connection) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
扩展
为什么要区分编译期异常和运行期异常(异常的设计理念)?
主要针对不同的角色而言的
1、运行期异常
主要针对用户, 运行期异常是由于用户提供了不合法的数据导致的,
2、编译器异常
主要针对开发人员,编译期异常是有红色波浪线。
处理编译期异常有两种方式:throws和try/catch
使用throwss是在运行时候还是可能会报错,因为我们没检查出来或者等待用户输入而且不一定能解决异常
所以,我们一般都是用try/catch