java数据库无法解析stmt_JDBC操作数据库 - 学而时习之的个人空间 - OSCHINA - 中文开源技术交流社区...

1、概述

35f8d7c424dba29d8216a1d18ab235b1.png

2、JDBC

dfa88b2ae4ea674918faf117a4d971a0.png

3、项目引用jar包

30ac73a3fa4c5f15cb5a2f47124437b7.png

7ebee6fd4fd674e74c7feef5325f5a43.png

注:在finally中反向关闭资源

rs.close();

stmt.close();

conn.close();

4、创建配置文件读取数据库信息

bef5e5645c7de70246ec74274044b222.png

load方法IO操作消耗资源,因此创建工具类将读取属性文件封装,使用单例模式,控制工具类实例生成的个数,提升程序性能。

(私有构造方法,并且在该方法中读取属性文件;创建getInstance方法限制对象的数量,只能有一个)

8248b669b0584e8241ecd65482220134.png 

e3467c844f11cbd5f8df5cd6a555e818.png

5、使用JDBC实现信息的增加、删除、修改

更换Statement对象为PreparedStatement,插入数据使用占位符:

bd16ed9dbcb83d59cf9e479bb4397bfa.png

d89ed5e5ecff396a9ebdc28c30bedbe0.png

aeb24a202b6fd3a6c7c24e82235d45a0.png

aecffac7d3164780bf49f7e33bbbb28d.png

6、创建BaseDao

0452f521bacb47533166c2080147d94a.png

50da099f1bbde579b8c5f89793b92e35.png

b76186ebcf7093eb9cdee712b2b12ed6.png

5e81a49d1670d6276acf081e062856f5.png

73b1b5d47416e4b33cc555309ddcd605.png

e88e918e32554dcd8c94a9f809fe3be9.png

将NewsDao转换成接口,降低耦合:

217a439b68aefe54edd02edf801e4b81.png

创建实现类包,创建实现类NewsDaoImpl(将BaseDao和NewsDao放入dao包中):

b919309db2c504126c12c09d45424280.png

62d3220c71354bcdc42b55bae3e14ed6.png

f3468077e4d15430d110f6ed3b613a75.png

85f0ec80fb2610bb51c8e66b4619add7.png

2f34547568420268fecd65f44bd9727c.png

验证:

292e167c9fbf8ad085f796d217a086bd.png

7、使用数据源、连接池达到重用数据库连接的目的,提高性能

4122e495f9ac49236462e03f5ca9835f.png

在Tomcat中配置数据源的步骤:

97b480bc637b1ea5ed6090db241765cb.png

beb241b92b6f043d61e519def74304fb.png

通过JNDI根据name获取数据源:

0c766120c6a9a0d92087be9bb25a5120.png

cad0bd145e9d1e281aae0de98db6ed7e.png

2d486194e1062eb18c2fbc5f25bf0317.png

如果结果为null,修改这个地方:

d69717bf832615db2ce9c4f1c7043262.png

异常处理:

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运行结果:

e82f432096bb00e03652007916493c67.png

8、小结

d7ec89530a115894467b4dc4cd89f29d.png

caa1d3f70921fac19c833708ca7849eb.png

da11f46e68f961c418f79b4b29230692.png

2874ce7d7090258a1abc183f2a3b1250.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值