高端网站建设专家评价,看WordPress用哪个页面,沈阳网站建设 南塔,廊坊百度快速排名JDBC概述 什么是JDBC JDBC全称是Java数据库连接#xff08;Java Database Connectivity#xff09;#xff0c;应用程序可通过这套API连接到关系数据库#xff0c;并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。是一套用于执行SQL语句的Java API。Java的数据… JDBC 概述 什么是JDBC JDBC全称是Java数据库连接Java Database Connectivity应用程序可通过这套API连接到关系数据库并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。是一套用于执行SQL语句的Java API。Java的数据库连接接口。它是Java API中的一部分通过它可以将Java程序和关系数据库集成在一起。应用程序通过调用JDBC来操作数据库的过程其实是由数据库厂商提供的JDBC驱动程序来负责的。如果要更换数据库只要更换驱动程序并在JDBC中载入新的驱动程序来源即可完成数据库系统的变更。JDBC允许任何使用Java语言编写的小应用程序或应用程序访问数据库。通过使用SQL语句可以对数据库中的数据进行相应的插入、删除和更新操作。 JDBC由Java语言编写的相关类和接口组成 驱动程序 DriverManager类、Driver 接口与特定数据库连接 Connection接口执行SQL语句 Statement接口、PreparedStatement接口提供数据库信息 DatabaseMetaData接口结果集 ResultSet接口DriverManager类用来管理JDBC驱动程序主要用于跟踪和加载驱动程序并负责选取数据库驱动程序和建立新的数据库连接Driver 接口每个驱动程序类必须实现的接口。该接口可以将API的调用映射到数据库的操作Connection接口用来连接应用程序与指定的数据库Statement接口用来执行静态SQL语句并得到SQL语句并得到执行后的结果PreparedStatement接口用来返回有关数据、数据库和驱动程序等与底层数据库有关的信息DatabaseMetaData接口提供对数据库表的访问执行查询后返回的结果集。通过ResultSet对象是通过执行一个查询数据库的语句生成 连接 在连接数据库时需要指明数据源以及相关的一些参数。数据源主要包括两部分其中protocol表示连接到数据库的驱动程序DatabaseName表示数据库的名字jdbc:protocol:DatabaseName在连接数据库时需要找到使用JDBC驱动程序类的名称。不同的数据库供应商的数据库产品都有自己的驱动程序不同数据库的URL和驱动程序也有所不同。使用Java与数据库连接进行数据存取的过程:加载驱动程序--Collection建立连接(连接数据库)--创建Statement对象(执行SQL语句)--取得ResultSet结果集 具体过程 1首先要加载当前数据源的驱动程序。通常使用Class.forName()方法加载 2建立数据库的连接。可以通过DriverManager类中的getConnection方法来实现与数据库的连接。conn DriverManager.getConnection(url, userNamew, password);3建立连接后就可以使用SQL语句对数据库进行访问。这就需要创建Statement对象。通过该对象可以执行相应的SQL语句并将其操作于数据库 stmt conn.createStatement(); 4将SQL语句执行后的结果返回。执行的查询结果可以以ResultSet结果集的形式返回ResultSet rs stmt.executeQuery(sqlSelect); 5对结果集进进行处理。例如我们可以通过使用一个while循序获得结果集中的所有记录while (rs.next()) { String str1 rs.getString(1); String str2 rs.getString(2); } 6关闭数据库的连接。在执行完数据库的操作之后需要将与数据库连接有关的对象关闭。主要包括Statement对象、Connection对象等。 stmt.close(); conn.close();API详解 注册驱动应用Class.forName(com.mysql.jdbc.Driver);获得连接对象应用getConnection(jdbc:mysql://localhost:3306/day07,root,root)获得执行sql的statement对象应用createStatement()返回的是Statement接口Statement接口执行操作* executeUpdate(sql)* executeQuery(sql)prepareStatement(sql)返回PreparedStatement接口预编译SQL语句PreparedStatement 是Statement的子接口* 使用它可以解决sql注入问题* 执行SQL方法executeQuery()executeUpdate()setInt(?的位置值)遍历结果集应用next() , getInt() , getString()释放资源 调用close方法PreparedStatement对象滚动结果集可以将游标定位到任意位置PrepareStatement pstmt conn.prepareStatement(String sql, int resultSetType, int resultSetConcurrency) ResultSet对象处理结果集 方法 ResultSetMetaData getMetaData() 检索此ResultSet对象的列的编号、类型和属性boolean getBoolean(int columnIndex) 以Java编程语言中boolean的形式检索此ResultSet对象的当前行中指定列的值float getFloat(int columnIndex) 以Java编程语言中float的形式检索int getInt(int columnIndex) 以Java编程语言中int的形式检索此ResultSet对象的当前行中指定列的值String getString(int columnIndex) 以Java编程语言中String的形式检索此ResultSet对象的当前行中指定列的值boolean next() 将指针从当前位置下移一行ResultSet接口中还提供了一些方法用于实现滚动结果集 boolean absolute(int row) 将游标移动到此ResultSet对象的指定参数row所对应的行。若游标位于有效行则返回trueboolean relative(int rows) 按相对行数移动游标到参数rows指定的行。若游标位于有效行上则返回trueboolean first() 将游标移动到第一行。若游标位于有效行则返回true若结果集中没有数据行则返回falseboolean last() 将游标移动到最后一行。若游标位于有效行则返回true若结果集中没有数据行则返回falseboolean next() 将游标移动到当前位置的下一行。若新当前行有效则返回true若不存在则返回falseboolean previous() 将游标移动到ResultSet对象的上一行。若该行有效则返回true若不在结果集中则返回falseboolean isFirst() 判断游标是否在此ResultSet对象的第一行。如果是则返回trueboolean isLast() 判断游标是否在此ResultSet对象的最后一行。如果是则返回trueboolean isBeforeFirst() 判断游标是否在此ResultSet对象的第一行之前如果是则返回trueboolean isAfterLast() 判断游标是否在此ResultSet对象的最后一行之后如果是则返回truevoid beforeFirst() 将游标移动到此ResultSet对象第一行之前void afterLast() 将游标移动到此ResultSet对象的最后一行之后更新结果集 当将创建Statement和PreparedStatement对象中的参数resultSetConcurrency设置为ResultSet.CONCUR_UPDATABLE时则表明该结果集是可更新的。这时我们就可以直接在结果集中对数据库进行修改了。方法void insertRow() 将插入行的内容插入到此 ResultSet 对象和数据库中。当指针位于插入时才可以调用该方法void updateRow() 用此 ResultSet 对象的当前行的新内容更新底层数据库void deleteRow() 将当前行从此 ResultSet 对象和底层数据库中删除void cancelRowUpdates() 取消对 ResultSet对象中的当前行所作的更新。此方法在调用更新方法之后调用updateRow方法之前调用才可以实现对行所作的更新。如果在updateRow方法之后调用该方法则不能取消对行所做的更新void moveToCurrentRow() 将游标移动到当前行。只有游标位于插入行上时调用此方法才有效void moveToInsertRow() 将游标移动到ResultSet 对象中插入行核心API DriverManagerDriverConnectionStatement PreparedStatement CallableStatementResultSetRowSetDatabaseMetaDataResultSetMetaDataTypesSQLExceptionJDBC批处理 在实际开发中经常需要向数据库发送多条SQL语句这时如果逐条执行这些SQL语句效率会很低。为此JDBC提供了批处理机制即同时执行多条SQL语句。Statement和PreparedStatement都实现了批处理。Statement批处理PreparedStatement批处理 大数据处理 大数据处理主要指的是对CLOB和BLOB类型数据的操作。在应用程序中要想操作这两种数据类型必须使用PreparedStatement 完成并且所有的操作都要以IO流的形式进行存放和读取。处理CLOB数据 处理BLOB数据 JDBC处理事务与数据库连接池 JDBC处理事务 在数据库操作中一项事务是由一条或多条操作数据库的SQL语句组成的一个不可分割的工作单元只有当事务中的所有操作都正常完成整个事务才能被提交到数据库中如果有一项操作没有完成则整个事务会被撤销。针对JDBC处理事务的操作在Connection接口中提供了三个相关的方法setAutoCommit(boolean autoCommit)commit()rollback()数据库连接池 什么是数据库连接池 在JDBC编程中每次创建和断开Connection对象都会消耗一定的时间和IO资源。频繁地创建、断开数据库连接势必会影响数据库的访问效率甚至导致数据库崩溃。为了避免频繁的创建数据库连接工程师们提出了数据库连接池技术。为了避免频繁的创建数据库连接工程师们提出了数据库连接池技术。DataSource接口 为了获取数据库连接对象ConnectionJDBC提供了javax.sql.DataSource接口它负责与数据库建立连接并定义了返回值为Connection对象的方法Connection getConnection() Connection getConnection(String username, String password)我们习惯性的把实现了javax.sql.DataSource接口的类称为数据源顾名思义数据源即数据的来源。在数据源中存储了所有建立数据库连接的信息。DBCP数据源 DBCP是数据库连接池DataBase Connection Pool的简称是Apache组织下的开源连接池实现也是Tomcat服务器使用的连接池组件。单独使用DBCP数据源时需要在应用程序中导入两个jar包。commons-pool.jar包commons-dbcp.jar包 commons-dbcp.jar包中包含两个核心类分别是BasicDataSourceFactory和BasicDataSource它们都包含获取DBCP数据源对象的方法。编写配置文件配置文件 xx.properties中有命名格式要求driverClassNameurlusernamepasswordBasicDataSource是DataSource接口的实现类主要包括设置数据源对象的方法。方法void?setDriverClassName(String?driverClassName) 设置连接数据库的驱动名称void?setUrl(String?url) 设置连接数据库的路径void?setUsername(String?username) 设置数据库的登陆账号void?setPassword(String?password) 设置数据库的登录密码void setInitialSize(int?initialSize) 设置数据库连接池初始化的连接数目void setMaxActive (int?maxIdle) 设置数据库连接池最大活跃的连接数目void setMinIdle(int?minIdle) 设置数据库连接池最小闲置的连接数目Connection getConnection() 从连接池中获取一个数据库连接 当使用DBCP数据源时首先得创建数据源对象数据源对象的创建方式有两种1.通过BasicDataSource类直接创建数据源对象使用BasicDataSource类创建一个数据源对象手动给数据源对象设置属性值然后获取数据库连接对象。2.通过读取配置文件创建数据源对象使用BasicDataSourceFactory工厂类读取配置文件创建数据源对象然后获取数据库连接对象。C3P0数据源 C3P0是目前最流行的开源数据库连接池之一它实现了DataSource数据源接口支持JDBC2和JDBC3的标准规范易于扩展并且性能优越著名的开源框架Hibernate和 Spring使用的都是该数据源。我们在使用C3P0数据源开发时需要了解C3P0中DataSource接口的实现类ComboPooledDataSource它是C3P0的核心类提供了数据源对象的相关方法。方法 void setDriverClass() 设置连接数据库的驱动名称void setJdbcUrl() 设置连接数据库的路径void setUser() 设置数据库的登陆账号void setPassword() 设置数据库的登录密码void setMaxPoolSize() 设置数据库连接池最大的连接数目void setMinPoolSize() 设置数据库连接池最小的连接数目void setInitialPoolSize() 设置数据库连接池初始化的连接数目Connection getConnection() 从数据库连接池中获取一个连接当使用C3P0数据源时首先得创建数据源对象创建数据源对象可以使用ComboPooledDataSource类该类有两个构造方法分别是ComboPooledDataSource()和ComboPooledDataSource(String configName)1.通过ComboPooledDataSource类直接创建数据源对象 使用ComboPooledDataSource类直接创建一个数据源对象手动给数据源对象设置属性值然后获取数据库连接对象2.通过读取配置文件创建数据源对象通过ComboPooledDataSource (String configName)构造方法读取c3p0-config.xml配置文件创建数据源对象然后获取数据库连接对象。转载于:https://www.cnblogs.com/justdoitba/p/7582127.html