北京建设银行支行查询官方网站,wordpress 优秀网站,山西响应式网站平台,taoyin8 wordpress15.2.1 数据库访问步骤
使用JDBC API连接和访问数据库#xff0c;一般分为以下5个步骤:
(1) 加载驱动程序
(2) 建立连接对象
(3) 创建语句对象
(4) 获得SQL语句的执行结果
(5) 关闭建立的对象#xff0c;释放资源
下面将详细描述这些步骤
15.2.2 加载驱动程序 要使…15.2.1 数据库访问步骤
使用JDBC API连接和访问数据库一般分为以下5个步骤:
(1) 加载驱动程序
(2) 建立连接对象
(3) 创建语句对象
(4) 获得SQL语句的执行结果
(5) 关闭建立的对象释放资源
下面将详细描述这些步骤
15.2.2 加载驱动程序 要使应用程序能够访问数据库必须首先加载驱动程序。加载驱动程序一般使用Class类的forName()静态方法格式如下: public static Class? forName(String className) 该方法返回一个Class类的对象。参数className为字符串表示的完整驱动程序类的名称若找不到驱动程序将抛出ClassNotFoundException异常 对于不同的数据库驱动程序的类名不同。下面几行代码分别是加载MySQL数据库、Oracle数据库和PostgreSQL数据库驱动程序
//加载MySQL数据库驱动程序
Class.forName(com.mysql.jdbc.Driver);
//加载Oracle数据库驱动程序
Class.forName(oracle.jdbc.driver.OracleDriver);
//加载PostgreSQL数据库驱动程序
Class.forName(org.postgresql.Driver);
另一种加载驱动程序的方法是使用DriverManager类的静态方法registerDriver()注册驱动程序如下所示。 DriverManager.registerDriver(new org.postgresql.Driver());
其中org.postgresql.Driver为PostgreSQL的驱动程序类 注:使用JDBC4.0及以上的版本可以采用动态加载驱动程序的方法即不需要使用Class.forName()方法加载驱动程序。只需将包含JDBC驱动程序的JAR文件添加到CLASSPATH中。例如对MySQL数据库在mysql-connector-java-5.1.39-bin.jar中META-INF/services/java.sql.Driver文件的内容是org.mysql.jdbc.Driver 动态加载驱动程序的优点是不仅少写几行代码而且不需要将JDBC驱动程序类名硬编码在程序中。如果需要更新驱动程序 只需用新的JAR文件替换旧的文件即可。新的类名也不必与旧的类名匹配。
15.2.3 建立连接对象
1.DriverManager类 DriverManager类是JDBC的管理层作用于应用程序和驱动程序之间。DriverManager类跟踪可用的驱动程序并在数据库和驱动程序之间建立连接。 建立数据库连接的方法是调用DriverManager类的getConnection()静态方法该方法有下面两种格式: puiblic static Conneciton getConnection(String dburl); puiblic static Conneciton getConnection(String dburl,String user,String password). 参数dburl表示JDBC URLuser表示数据库用户名password表示口令。DriverManager类维护一个注册的Driver类列表。调用该方法DriverManager类试图从注册的驱动程序中选择一个合适的驱动程序然后建立与给定数据库的连接。如果不能建立连接将抛出SQLException异常
2.数据库URL 数据库URL与一般的URL不同用来标识数据源这样驱动程序就可以与它建立连接。下面是数据库URL的标准语法包括由冒号分割的3个部分: jdbc:subprotocol:subname 其中jdbc表示协议数据库URL的协议总是jdbcsubprotocol表示子协议为驱动程序或数据库连接机制的名称子协议名通常为数据库厂商名如mysql,oraclepostgresql等subname为子名称表示数据库标识符该部分内容随数据库驱动程序的不同而不同
String url jdbc:mysql://localhost:3306/haozihua?useSSLfalse;
Connection conn DriverManager.getConnection(url, user, password);如代码所示 localhost为本机IP地址也可以更改为127.0.0.13306为MySQL数据库服务器使用的端口号;数据库名为haozihua,用户名为root,密码为root.
3.Connection对象 Connection对象代表与数据库的连接也就是在加载的驱动程序与数据库之间建立连接。一个应用程序可以与一个数据库建立一个或多个连接或与多个数据库建立连接 得到连接对象后可以调用Connection接口的方法创建SQL语句对象以及在连接对象上完成各种操作下面是Connection接口的常用方法.
public Statement createStatment()创建一个Statement对象使用该方法执行不带参数的SQL语句。public PreparedStatement prepareStatement(String sql):使用给定的SQL命令创建一个预编译语句对象使用该方法可执行带参数的SQL语句public void setAutoCommit(boolean autoCommit):设置通过该连接对数据库的更新操作是否自动提交默认情况为truepublic boolean getAutoCommit():返回当前连接是否为自动提交模式public void commit():提交对数据库的更新操作使更新写入数据库。只有当setAutoCommit()为false时才应该使用该方法。public void rollback():回滚对数据库的更新操作。只有当setAutoCommit()为false时才应该使用该方法。public void close():关闭该数据库连接。在使用连接后应该关闭否则连接会保持一段较长的时间直至超时public void isClosed()返回该连接是否已被关闭
15.2.4 创建语句对象
SQL语句对象有3种:Statement、PreparedStatement和CallableStatement。通过调用Connection接口的相应方法可以得到这3种语句对象本节只讨论Statement对象 Statement接口对象主要用于执行一般的SQL语句常用方法如下:
public ResultSet executeQuery(String sql):执行SQL查询语句参数sql为用字符串表示的SQL查询语句查询结果以ResultSet对象返回public int executeUpdate(String sql):执行SQL更新语句参数sql用来指定SQL语句更新该语句可以是INSERT、DELETE、UPDATE语句或无返回的SQL语句如SQL DDL语句CREATE TABLE。该方法返回值是更新的行数如果语句没有返回则返回值为0 public boolean execute(String sql):执行可能有多个结果集的SQL语句sql为任何的SQL语句。如果语句执行的第一个结果为ResultSet对象该方法返回true否则返回falsepublic Connection getConnection():返回产生该语句的连接对象public void close():释放Statement对象占用的数据库和JDBC资源
执行SQL语句使用Statement对象的方法。对于查询语句调用executeQuery(String sql)方法该方法的返回类型为ResultSet再通过调用ResultSet的方法可以对查询结果的每行进行处理。
String sqlSELECT * FROM department;
ResultSet rststmt.executeQuery(sql);
while(rst.next()){
System.out.println(rst.getString(1)\t)
}对于更新语句如INSERT、UPDATE、DELETE需使用executeUpdate(String sql)方法。该方法返回值为整数用来只是被影响行的数目
15.2.5 ResultSet对象 ResultSet对象表示SQL查询语句得到的记录集合称为结果集。结果集一般是一个记录表其中包含列标题和多个记录行一个Statement对象一个时刻只能打开一个ResultSet对象。 每个结果集对象都有一个游标。所谓游标(cursor)是结果集的一个标志或指针。对新产生的ResultSet对象游标指向第一行的前面可以调用ResultSet对象的方法对查询结果处理。1.ResultSet的常用方法 ResultSet接口提供了对结果集操作的方法下面是一个常用的方法。public boolean next() throws SQLException 该方法将游标从当前位置向下移动一行。第一次调用next()方法将使第一行成为当前行以后调用游标依次向后移动。如果方法返回true说明新行是有效的行;若返回false说明已无记录。 可以使用getXxx()方法检索当前行的列值由于结果集列的数据类型不同所以应该使用不同的getXxx()方法获得列值。
15.2.4 关闭有关对象 数据库访问结束后应当关闭有关对象。可以使用每种对象的close()方法关闭对象也可以使用Java7的try-with-reso urces结构实现资源的自动关闭。