javaweb基础知识整理(9)

2019-08-31 23:10

password=root # initialSize=10 #最大连接数量 maxActive=50 # maxIdle=20 # minIdle=5 # maxWait=60000 5.C3P0数据源

配置参数:

driverClass jdbcUrl user

password

acquireIncrement:当连接池中已经没有连接时,连接池自动获取连接时一次获取的连接个数。 initialPoolSize:连接池初始化时,获取连接的个数。 maxPoolSize:连接池可以保有的最大的连接的数量。

maxIdleTime:当连接空闲多久时释放连接。如果该时间值设置问为0,表示从不释放连接。 minPoolSize:连接池应该保有的最小的连接的数量。 方式1: ComboPooledDataSource source = new ComboPooledDataSource(); source.setDriverClass(\ source.setJdbcUrl(\ source.setUser(\ source.setPassword(\方式2: ComboPooledDataSource source = new ComboPooledDataSource(); conn = source.getConnection(); 在类加载目录下名称为c3p0-config.xml的配置文件中配置: 6.Tomcat数据源

如何为tomcat配置数据源:

(1)tomcat/conf/context.xml文件中配置配置在这个位置的信息将会被所有的web应用所共享。

(2)tomcat/conf/[engin]/[Host]/context.xml文件中可以配置标签,这里配置的信息将会被这台虚拟主机中的所有web应用所共享。

(3)tomcat/conf/server.xml文件中的标签中配置标签,这是web应用的第一种配置方式,在这个标签中配置的信息将只对当前web应用起作用。

(4)tomcat/conf/[engin]/[Host]/自己创建一个.xml文件,在这个文件中使用标签配置一个web应用,这是web应用第二种配置方式,在这个标签中配置的信息将只会对当前web应用起作用。

(5)web应用还有第三种配置方式:将web应用直接放置到虚拟主机管理的目录.此时可以在web应用的META-INF文件夹下创建一个context.xml文件,在其中可以写标签进行配置,这种配置信息将只会对当前web应用起作用。 详细操作步骤: 1、配置使用tomcat 内置连接池 配置 元素 context元素有三种常见配置位置 1) tomcat/conf/context.xml 所有虚拟主机,所有工程都可以访问该连接池。 2) tomcat/conf/Catalina/localhost/context.xml 当前虚拟主机(localhost)下所有工程都可以使用该连接池。 3) 当前工程/META-INF/context.xml 只有当前工程可以访问该连接池。 * 必须先将mysql驱动jar包 复制tomcat/lib下 * 在tomcat启动服务器时,创建连接池对象,绑定 jdbc/EmployeeDB 指定名称上 2、通过运行在JNDI容器内部的程序(Servlet/JSP)去访问tomcat内置连接池 Context context = new InitialContext(); Context envCtx = (Context)context.lookup(\固定路径 DataSource datasource = (DataSource) envCtx.lookup(\通过绑定名称,查找指定java对象 。 7.JNDI技术简介

JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.naming包,这套API的主要作用在于:它可以把Java对象放在一个容器中(支持JNDI容器 Tomcat),并为容器中的java对象取一个名称,以后程序想获得Java对象,只需通过名称检索即可。

其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。

十五、JDBC元数据

1.DataBaseMetaData

元数据:数据库、表、列的定义信息。 Connection.getMetaData()

DataBaseMetaData对象

? getURL():返回一个String类对象,代表数据库的URL。 ? getUserName():返回连接当前数据库管理系统的用户名。 ? getDriverName():返回驱动驱动程序的名称。

? getPrimaryKeys(String catalog, String schema, String table):返回指定表主键的结果集。 ? getTables() public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; ComboPooledDataSource source = new ComboPooledDataSource(); try{ conn = source.getConnection(); //--获取当前数据库的元数据 } DatabaseMetaData metaData = conn.getMetaData(); //----获取数据库连接时使用的URL String url = metaData.getURL(); System.out.println(url); //----获取数据库的用户名 String username = metaData.getUserName(); System.out.println(username); //----获取驱动的名称 String driverName = metaData.getDriverName(); System.out.println(driverName); //----获取数据库中指定表的主键信息 rs = metaData.getPrimaryKeys(null, null, \ while(rs.next()){ short cseq = rs.getShort(\ String cname = rs.getString(\ System.out.println(cseq+\ } //----获取表 rs = metaData.getTables(null, null, \ while(rs.next()){ String tabName = rs.getString(\ System.out.println(tabName); } }catch (Exception e) { e.printStackTrace(); }finally{ DbUtils.closeQuietly(conn, ps, rs); } 2.ParameterMetaData

PreparedStatement . getParameterMetaData() ? 获得代表PreparedStatement元数据的ParameterMetaData对象。 ? Select * from user where name=? And password=? ParameterMetaData对象 ? getParameterCount() :获得指定参数的个数 ? getParameterTypeName(int param) :获得指定参数的sql类型(Mysql不支持) public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; ComboPooledDataSource source = new ComboPooledDataSource(); try{ conn = source.getConnection(); ps = conn.prepareStatement(\ //--获取参数元数据 ParameterMetaData metaData = ps.getParameterMetaData(); //----参数的个数 int count = metaData.getParameterCount(); System.out.println(count); //----获取参数的类型 } String type = metaData.getParameterTypeName(1); System.out.println(type); String type2 = metaData.getParameterTypeName(2); System.out.println(type2); }catch (Exception e) { e.printStackTrace(); }finally{ DbUtils.closeQuietly(conn, ps, rs); } 3.ResultSetMetaData

ResultSet. getMetaData()

? 获得代表ResultSet对象元数据的ResultSetMetaData对象。 ResultSetMetaData对象

? getColumnCount() :返回resultset对象的列数 ? getColumnName(int column) :获得指定列的名称

? getColumnTypeName(int column) :获得指定列的类型 public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; ComboPooledDataSource source = new ComboPooledDataSource(); try{ conn = source.getConnection(); ps = conn.prepareStatement(\ rs = ps.executeQuery(); //--获取结果集元数据 ResultSetMetaData metaData = rs.getMetaData(); //----获取结果集中的列数 int cc = metaData.getColumnCount(); //System.out.println(cc); //----获取结果集中指定列的名称 //String cn = metaData.getColumnName(2); //System.out.println(cn); //----获取结果集中指定列的类型的名称 //String ct = metaData.getColumnTypeName(3); //System.out.println(ct); System.out.println(\for(int i = 1;i<=cc;i++){ String cn = metaData.getColumnName(i); String ct = metaData.getColumnTypeName(i); System.out.print(cn+\} System.out.println(); System.out.println(\while(rs.next()){ for(int i =1 ;i<=cc;i++){ Object obj = rs.getObject(i); System.out.print(obj+\ } } System.out.println(); } System.out.println(\ }catch (Exception e) { e.printStackTrace(); }finally{ DbUtils.closeQuietly(conn, ps, rs); } 十六、DBUtils框架

commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。

API介绍:

? org.apache.commons.dbutils.QueryRunner --- 核心 ? org.apache.commons.dbutils.ResultSetHandler ? 工具类

? org.apache.commons.dbutils.DbUtils。

1.DbUtils类

DbUtils :提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。主要方法如下: ? public static void close(…) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭方法。这些方法检查所提

供的参数是不是NULL,如果不是的话,它们就关闭Connection、Statement和ResultSet。 ? public static void closeQuietly(…): 这一类方法不仅能在Connection、Statement和ResultSet为NULL情况下避免关闭,

还能隐藏一些在程序中抛出的SQLException。

? public static void commitAndCloseQuietly(Connection conn): 用来提交连接,然后关闭连接,并且在关闭连接时不抛

出SQL异常。

? public static boolean loadDriver(java.lang.String driverClassName):这一方装载并注册JDBC驱动程序,如果成功就返

回true。使用该方法,你不需要捕捉这个异常ClassNotFoundException。

2. QueryRunner

2.1简介

该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。

QueryRunner类提供了两个构造方法: ? 默认的构造方法。

? 需要一个 javax.sql.DataSource 来作参数的构造方法。

2.2主要方法

两个构造方法:

? QueryRunner() --需要控制事务时,使用这组方法

int update(Connection conn, String sql)

Execute an SQL INSERT, UPDATE, or DELETE query without replacement parameters. int update(Connection conn, String sql, Object... params) Execute an SQL INSERT, UPDATE, or DELETE query. int update(Connection conn, String sql, Object param)

Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.


javaweb基础知识整理(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中建四局第三建筑工程有限公司四川分公司施工方案管理规定0831

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: