一、操作JDBC的准备
1.拷贝MySQL的驱动包到项目中的lib目录下:mysql-connector-java-5.1.x-bin.jar2.build path,告诉项目去哪里去找字节码文件。
操作JDBC的第一步,获取JDBC的连接对象:Connection.
步骤1: 加载注册驱动.
Class.forName(“com.mysql.jdbc.Driver”);
为什么说这行代码就在完成加载注册驱动的操作。
1):把com.mysql.jdbc.Driver这份字节码文件加载进JVM。
2):把字节码加载进JVM之后,就会立刻执行该类的静态代码块。
Connection conn = DriverManager.getConnection (String url,String username,String password);
参数:
url : jdbc:mysql://数据库服务器安装电脑的主机IP:端口/哪一个数据库名称
连接本机: jdbc:mysql://localhost:3306/test
如果连接的数据库服务器在本机,并且端口是3306,则可以简写:
jdbc:mysql:///test
username: 所连接数据库服务器的用户账号(root)
password: 所连接数据库服务器的用户密码(admin)
验证已经获取连接:可以在MySQL控制台,使用命令:show processlist; 查看MySQL运行进程,也可以在JAVA中输出连接对象查看。
-----------------------------------------------------------------------------------------------------
从Java6(JDBC4.0)开始,可以不再加载注册驱动,直接通过DriverManager获取连接对象。
为啥不再需要加载注册驱动了?
从Java6开始,规范要求每一个JDBC驱动的包,都必须带有META-INF/services/java.sql.Driver文件。
开发建议:依然还是建议手动的加载注册驱动. 如此,可以兼容之前的JDK版本,在JavaWeb中必须手动加载。
二、JDBC相关的API
1.操作JDBC的步骤(贾琏欲执事):
----------------------------------
1):加载注册驱动.
2):获取连接对象.
3):创建/获取语句对象
4):执行SQL语句
5):释放资源
2.Connection接口的常用方法
Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
PreparedStatement prepareStatement(String sql) :获取预编译语句对象。
参数:sql,并不是一个静态SQL,而是带有占位符的SQL(?).
void close():关闭连接对象
3.Statement接口的常用方法
用于执行静态 SQL (写死的SQL,可以执行运行的SQL)语句并返回它所生成结果的对象。
int executeUpdate(String sql):可以执行DML(增删改)和DDL语句,如果是执行DDL什么都不返回,执行DML返回受影响的行数。
ResultSet executeQuery(String sql) :执行给定的 DQL语句,该语句执行之后返回一个 ResultSet 对象。
void close():关闭语句对象
4.PreparedStatement接口的常用方法
是Statement的子接口,表示预编译的 SQL 语句的对象,设置占位符参数(告诉SQL中的?到底表示哪一个值):
void setXxx(int parameterIndex, Xxx value): xxx表示数据类型,比如:String,int,Long等,parameterIndex:设置第几个占位符?(从1开始),value:需要设置的参数值。
int executeUpdate():可以执行DML(增删改)和DDL语句,如果是执行DDL什么都不返回,执行DML返回受影响的行数.
ResultSet executeQuery() :执行给定的 DQL语句,该语句执行之后返回一个 ResultSet 对象。
注意:此时不需要传递SQL参数
void close():关闭语句对象。
5.ResultSet接口的常用方法
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成.
ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。(类似迭代器操作)
-------------------------------------------------------------------------------------
boolean next(): 先判断光标是否能向下移动,如果可以,则往下移动。
xxx:表示数据类型,比如:int,long,String等,根据当前列的数据类型来选择。
xxx getXxx(int columnIndex) : 获取当前光标行的第N列的数据,从1开始计算。
xxx getXxx(String columnName) :获取当前光标行的指定列名的列的数据,推荐。
void close():关闭结果集对象