1、概述
2、JDBC
3、项目引用jar包
注:在finally中反向关闭资源
rs.close();
stmt.close();
conn.close();
4、创建配置文件读取数据库信息
load方法IO操作消耗资源,因此创建工具类将读取属性文件封装,使用单例模式,控制工具类实例生成的个数,提升程序性能。
(私有构造方法,并且在该方法中读取属性文件;创建getInstance方法限制对象的数量,只能有一个)
5、使用JDBC实现信息的增加、删除、修改
更换Statement对象为PreparedStatement,插入数据使用占位符:
6、创建BaseDao
将NewsDao转换成接口,降低耦合:
创建实现类包,创建实现类NewsDaoImpl(将BaseDao和NewsDao放入dao包中):
验证:
7、使用数据源、连接池达到重用数据库连接的目的,提高性能
在Tomcat中配置数据源的步骤:
通过JNDI根据name获取数据源:
如果结果为null,修改这个地方:
异常处理:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at main.java.com.ljb.dao.BaseDao.getConnection2(BaseDao.java:59)
at main.java.com.ljb.dao.BaseDao.executeUpdate(BaseDao.java:91)
at main.java.com.ljb.dao.impl.ProductDaoImpl.add(ProductDaoImpl.java:97)
at main.java.com.ljb.dao.impl.ProductDaoImpl.main(ProductDaoImpl.java:157)
Exception in thread "main" java.lang.NullPointerException
at main.java.com.ljb.dao.BaseDao.executeUpdate(BaseDao.java:93)
at main.java.com.ljb.dao.impl.ProductDaoImpl.add(ProductDaoImpl.java:97)
at main.java.com.ljb.dao.impl.ProductDaoImpl.main(ProductDaoImpl.java:157)
数据源由Tomccat容器创建,因此必须启动Tomcat,运行该项目
JNDIdemo。jsp运行结果:
8、小结