java

DriverManager

管理JDBC驱动的服务类,主要通过它获取Connection数据库链接

Connection常用数据库

Statement

用于执行SQL语句的API接口,该对象可以执行DDL、DCL语句,也可以执行DML语句,
还可以执行SQL查询语句,当执行查询语句是返回结果集,常用方法如下:
ResultSet executeQuery(String sql) throws SQLException:该方法用于执行查询语句,并返回查询结果对应的ResultSet对象,
        该方法只用于查询语句。
int executeUpdate(String sql) throws SQLException:该方法用于执行DML语句,并返回受影响的行数;
        该方法也可以执行DDL,执行DDL返回0;
boolean execute(String sql) throws SQLException:该方法可以执行任何SQL语句,如果执行后第一个结果是ResultSet对象,
        则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false;


PreparedStatement

预编译的statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译SQL(通常指带参数SQL)语句,
以后每次只改变SQL命令参数,避免数据库每次都编译SQL语句,这样性能就比较好。而相对于Statement而言,
使用PreparedStatement执行SQL语句时,无需重新传入SQL语句,因为它已经预编译了SQL语句。
但是PreparedStatement需要为编译的SQL语句传入参数值,所以它比了如下方法:
void setXxx(int index, value)根据该方法传入的参数值的类型不同,需要使用不同的方法。
传入的值的类型根据传入的SQL语句参数而定。



ResultSet

void close() throws SQLException:释放、关闭ResultSet对象
boolean absolute(int row):将结果集移动到第几行,如果row是负数,则移动到倒数第几行。
        如果移动到的记录指针指向一条有效记录,则该方法返回true;
void beforeFisrt(): 将ResultSet的记录指针定位到首行之前,这是ResultSet结果集记录指针的
        初始状态:记录指针的起始位置位于第一行之前。
boolean first():将ResultSet的记录指针定位到首行。如果移动后的记录指针指向一条有效记录,则该方法返回true。
boolean previous():将ResultSet的记录指针定位到上一行,如果移动后的记录指针指向一条有效记录,则该方法返回true。
boolean next():将ResultSet的记录指针定位到下一行。如果移动后的记录指针指向一条有效记录,则返回true。
boolean last():将ResultSet的记录指针定位到最后一行。如果移动后的记录指针指向一条有效记录,则返回true。
void afterLast():将ResultSet的记录指针定位到最后一行之后。
注意:在JDK1.4以前只支持next移动,且每次移动一个位置。到JDK1.5就可以随意定位。



二、

1、加载数据库驱动
Class.forName(driverClass)
2、通过DriverManager获取数据库的链接
DriverManager.getConnection(String url, Stirng user, String pass)
//使用DriverManager来获取链接,三个参数:分别是数据量的url、用户名、密码。
3、通过Connection对象创建Statement对象或PreparedStatement对象
4、Statement执行SQL语句,Statement有三大方法来执行SQL语句:
execute://可以执行任何SQL语句,单比较麻烦
executeUpdate://可以执行DML、DDL语句。执行DML返回受影响的SQL语句行数,执行DDL返回0;
executeQuery://只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
PreparedStatement执行SQL语句:
对于我们操作数据库的时候,执行某一条SQL语句的时候。只有它的参数不同,而SQL语句相同。
我们可以使用占位符来设置我们的参数信息,PrepareStatement中的占位符是?,用?代替参数的位置。
insert into table values(?, ‘abc’, ?);
占位符仅仅支持PrepareStatement,而Statement不支持占位符。PrepareStatement是预编译SQL语句的,
然后将占位符替换成参数。而Statement就不能做到。
 PrepareStatement对象也有execute、executeUpdate、executeQuery这三个方法,但这三个方法都无需传递参数。
只需用PrepareStatement来设置占位符的参数,通过用setXxxx(index, value)来完成设置参数信息即可。
PrepareStatement的效率要比Statement的效率高。
PrepareStatement设置参数可以不拼接字符串,而Statement设置参数信息的时候需要手动拼接字符串。
拼接字符串容易操作程序错误、可读性降低、维护性升高、程序性能下降。而PrepareStatement直接设置参数
信息就降低了编程的复杂度。并且它可以放在SQL注入。因为它是通过setXxx方法进行设置参数信息,
而Statement是通过拼接字符串,很容易就造成SQL注入。 
综上所述,PrepareStatement比Statement有以下优点:
预编译SQL语句,性能更好
无需拼接SQL语句,编程更简单
可以防止SQL语句注入,安全性更好

5、ResultSet
   主要移动指针和获得值
   next、previous、first、last、beforeFrist、afterLast、absolute等移动指针的方法。
   getXxx获得移动指针指向行,特定列、索引的值。使用列名作为获取值的参数可读性好、使用索引作为获取参数性能好。
 
原文地址:https://www.cnblogs.com/chEnYoNg11/p/6181975.html