JDBC开发步骤
1.注册驱动
使用Class.forName(“com.mysql.cj.jdbc.Driver”);手动加载字节码文件到JVM中
5.x版本:Class.forName(“com.mysql.jdbc.Driver”);
8.x版本:Class.forName(“com.mysql.cj.jdbc.Driver”);
举例:
Class.forName(“com.mysql.cj.jdbc.Driver”);//加载驱动
2.连接数据库
通过DriverManager.getConnection(url,user,password)获取数据库连接对象
url:jdbc:mysql://localhost:3306/数据库名称?characterEncoding=UTF-8&serverTimezone= Asia/Shanghai&useSSL=false
User:用户名
Password:密码
举例:以数据库名称school为例
3.获取发送sql的对象
通过Connection 对象获取Statement对象,用于对数据库进行通用访问
Statemment statement =conn.createStatement();
但是使用Statement操作数据表存在弊端:
问题一:存在拼串操作,繁琐
问题二:存在SQL注入问题
SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的 SQL 语句段或命令(如:SELECT user, password FROM user_table WHERE user=‘a’ OR 1 = ’ AND password = ’ OR ‘1’ =‘1’) ,从而利用系统的 SQL 引擎完成恶意行为的做法。对于 Java 而言,要防范 SQL 注入,只要用 PreparedStatement(从Statement扩展而来) 取代 Statement 就可以了。
PreparedStatement
PreparedStatement继承了Statment接口,执行sql语句的方法无异
PreparedStatement p = conn.prepareStatement();
4.执行sql语句
String sql=”sql增删查改语句”;
Int result = statement.executeUpdate(sql);//执行SQL语句并接收结果
注意:
在编写DML语句时,一定要注意字符串参数的符号是单引号‘值’
DML语句:增删改时,返回受影响行数(int类型)
DQL语句:查询时,返回结果数据(ResultSet结果集)
5.处理结果
受影响行数:逻辑判断,方法返回
查询结果集:迭代,依次获取
6.释放资源
遵循先开后关原则,释放所使用到的资源对象
statement.colse();
conn.close()