servlet学习笔记之四
——数据库访问
1.JDBC-ODBC桥,其本身也是一个驱动,利用这个驱动,我们可以使用JDBC API 通过ODBC去访问数据库。这种桥机制实际上是把标准的JDBC 调用转换成相应的ODBC 调用,因此这种方式访问数据库效率是比较低。也有些数据库没有提供JDBC驱动,只有ODBC 驱动,比如访问ms access数据库就只能利用JDBC-ODBC 桥来访问。
2.建立到数据库的连接
DriverManager类的getConection()方法建立到数据库的连接,返回一个Connection对象。在DriverManager类中提供了3个重载的getConnection()方法。
² public static Connection getConnection(String url)throws SQLException
给方法通过给出数据库URL建立到数据库的连接。比如:
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection ("jdbc:odbc:test");
² public static Connection getConnection(String url,String user,String psw)throws SQLException
给方法取得数据库连接必须给出用户名和密码。如:
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(urlname,user,pw);
² public static Connection getConnection(String url,Properties info)throws SQLException
其中info 键值对,一般需要给出用户名和密码。
3.访问数据库
数据库连接被用于向数据库服务器发送命令和SQL语句,在连接建立后,需要对数据库进行访问,执行SQL语句。在java.sql包中给我们提供了3个接口:Statement,PreparedStatement ,CallableStatement.
Statement
调用Connection对象的creatStatement()方法创建一个Statement对象。Statement对象用于执行静态的SQL语句,返回执行的结果。
Statement接口中定义了下列方法用于执行SQL语句。
ResultSet executeQuery(String sql ) throws SQLException
该方法执行sql语句,返回一个ResultSet对象。ResultSet对象用于查看执行的结果。
int executeUpdate(String sql )throws SQLException
该方法执行sql指定的insert、update或者delete语句。另外,该方法也可以用于执行SQL DDL语句,例如:create table。
boolean execute(String sql)throws SQLException
感觉模糊,我觉得还是不用比较好。
连接数据库中,getInitParameter(“url”);获取的是web.xml的信息。
<Servlet>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/mysql</param- value >
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>javahe</param- value >
</init-param>
</Servlet>
PreparedStatement
我们在程序中传递的SQL语句在执行前必须被预编译,包括语句分析、代码优化等,然后才能被数据库引擎执行。如果重复执行只有参数不同的SQL语句,是比较低效的。如果要用不同的参数来多次执行同一个SQL语句,可以使用PreparedStatement的对象。PreparedStatement接口从Statement接口继承而来,它的对象表示一条预编译过的SQL语句。我们可以通过调用Connection对象的prepareStatement()方法而得到PreparedStatement对象。PreparedStatement对象所代表的SQL语句中的参数问号来表示,第一个参数从一开始。
eg:
String sql = "delete from " + m_objTable + " where " + m_objFldTagId + "=?";
PreparedStatement objStatement = m_objConnection.prepareStatement (sql);
objStatement.setInt (1, objSms.id);
objStatement. executeUpdate ();
CallableStatement
CallableStatement对象用于执行sql存储过程。CallableStatement接口从PreparedStatement接口继承而来,我们可以通过调用Connection对象的prepareCall()方法来得到CallableStatement对象。在执行存储过程之前,凡是存储过程中类型为OUT的参数必须被注册,这可以通过CallableStatement对象的registerOutParameter()方法来完成。对于类型为IN类型的参数,可以利用setXXX()方法来设置参数的值。
eg:
……
CallableStatement cstmt = conn.prepareCall(“call p_changesal(?,?)”);
cstmt.registerOutParameter(2,java.sql.Types.INTEGER);
cstmt.setInt(1,212212);
cstmt.execute();
int sal = cstmt.getInt(2);
元数据
在sql中,用于描述数据库或者它的各个组成部分之一的数据称为 元数据。
可以调用ResultSet 对象的getMetaData()方法来得到ResultSetMetaDate对象,该对象有获取元数据的方法(详细方法请查api)。
事务处理
事务处理保证所有的事务都作为一个工作单元来执行,即使出现了硬件或者系统失灵,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的操作都被提交,要么整个事务回滚到最初的状态。
当一个连接建立时,默认情况下是设置为自动提交事务,这意味着每次执行一个sql语句时,如果执行成功,就会向数据库自动提交,也就不能回滚了。为了将多个sql语句作为一个事务执行,可以调用Connection对象的setAutoCommit()方法,传入false来取消自动提交事务,然后在所有的sql语句完成后,调用Connection对象的commit()方法来提交事务,或者在执行出错时候调用Connection对象的rollback()方法来回滚事务。
至于可滚动和可更新的结果集。我这里不做总结。日后写翻页程序基本就了解了。
至于会话跟踪,不多说。改天练习一个购物车程序。练习一个在线人数统计(无非就是在web服务端用了静态Hash表存储信息,每次用户登录就add进去)。
转入JSP学习中。
分享到:
相关推荐
Java相关课程系列笔记之九Servlet学习笔记 Java相关课程系列笔记之十JSP学习笔记 Java相关课程系列笔记之十一Ajax学习笔记 Java相关课程系列笔记之十二jQuery学习笔记 Java相关课程系列笔记之十三Struts2学习笔记 ...
JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷
Servlet学习笔记(java的Servlet)。 jsp的学习基础。此笔记可让你5天内学会使用Servlet,可快速入门,也可当手册使用。 更多:http://download.csdn.net/user/daillo/all
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,...《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用于实际项目开发之中,并使用重构方式来改进应用程序架构。
**林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...
**JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。
吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案 本资源为吉林大学珠海学院JSP&Servlet学习笔记(第二版)的课后答案,涵盖了JSP和Servlet相关的知识点。本笔记共分为九章,每章节都包含了相关的问题答案,...
4. **Servlet** Servlet 是一个 Java 类,用于扩展服务器的功能,特别是在处理 HTTP 请求和响应上。它接收客户端的请求,处理业务逻辑,然后返回响应。Servlet 需要实现 `javax.servlet.Servlet` 接口,最常用的是 ...
由于直接学习笔记的内容没有给出具体的实例代码和详细解释,所以这里只提供了理论层面的知识点。如果需要学习具体实现,可以寻找相关的教程和项目实践来加深理解。同时需要注意的是,由于JSP/Servlet技术相对老旧,...
jsp&servlet学习笔记(第2版)光盘,买书附赠光盘,完片版本。
### Servlet学习笔记精炼知识点 #### 一、Servlet初始化与加载机制 1. **Servlet注册与实例化**:在Web应用中,一个Servlet的生命周期始于它的注册与实例化过程。通常,这一过程是在Web服务器启动时,根据`web.xml...
[JSP&Servlet学习笔记(第2版)] 林信良
书 名:JSP & Servlet学习笔记(第2版) 作 者:(台湾)林信良 著 出 版 社:清华大学出版社 出版时间:2012-5-1 ISBN:9787302283669 纸书页数:456页 定 价:¥ 58.00 内容简介: 本书是作者多年来...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP &Servlet;时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...