2014.09.17 周四-jdbc增删改查-javabean、jsp标签
2014-09-17 23:46
501 查看
一、程序详解
1、Connection
createStatementprepareStatement
prepareCall
setAutoCommit
commit
rollback
2、Statement
executeQuery查询executeUpdate增删改
excute都可以,但是返回的是boolean。
批处理:
execute
addBatch
executeBatch
3、ResultSet
获取数据:getObject,getString对数据集进行滚动的方法:
next
previous
absolute,定位到某一条
beforFirst
afterLast
4、常用数据类型转换表
5、释放资源
Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。(确保这个连接还给了数据库。就算try里面有问题,finally里面的代码也会执行)
抛异常好麻烦,都不知道抛到哪里去了?都不知道关了资源和没关资源怎么看?
二、使用jdbc对数据库增删改查
1、代码
工具类。增删改查共性的方法:连接和释放资源。JdbcUtils.java:package cn.itcast.utils; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JdbcUtils { private static String driver = null; private static String url = null; private static String username = null; private static String password = null; static { try { Properties prop = new Properties(); InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); prop.load(in); driver = prop.getProperty("driver"); url = prop.getProperty("url"); username = prop.getProperty("username"); password = prop.getProperty("password"); Class.forName(driver); } catch (Exception e) { System.out.println("...error"); // throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException, ClassNotFoundException { return DriverManager.getConnection(url, username, password); } public static void release(Connection conn, Statement st, ResultSet rs) { if(rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } rs = null; } if(st != null) { try { st.close(); } catch (Exception e) { e.printStackTrace(); } } if(conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }
src目录下:db.properties:#注释
driver = com.mysql.jdbc.Driver url = jdbc:mysql://localhost:3306/day14 username = root password = root
增删改查。Demo4.java:
package cn.itcast.demo; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; import cn.itcast.utils.JdbcUtils; //使用jdbc对数据库增删改查 public class Demo4 { @Test public void insert() { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); String sql = "insert into user(id, name, password, email, birthday) values(12, 'zhousan', '123456','zsan@sina.com', '1992-10-1')"; //注意时间字段的写法哦。 int num = st.executeUpdate(sql); if(num > 0) { System.out.println(num); System.out.println("插入成功!"); } else { System.out.println(num); System.out.println("插入失败!"); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { JdbcUtils.release(conn, st, rs); } } @Test public void delete() { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); String sql = "delete from user where id = 8"; int num = st.executeUpdate(sql); if(num > 0) { System.out.println(num); System.out.println("删除成功!"); } else { System.out.println(num); System.out.println("删除失败!"); } } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtils.release(conn, st, rs); } } @Test public void update() { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); String sql = "update user set name='heihei',id=10 where id=6"; int num = st.executeUpdate(sql); if(num > 0) { System.out.println(num); System.out.println("更新成功!"); } else { System.out.println(num); System.out.println("更新失败!"); } } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtils.release(conn, st, rs); } } @Test public void find() { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.createStatement(); String sql = "select id, name, password, email, birthday from user where id=3"; rs = st.executeQuery(sql); if(rs.next()) { System.out.println("id=" + rs.getInt("id")); System.out.println("id=" + rs.getString("name")); } } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtils.release(conn, st, rs); } } public static void main(String[] args) { Demo4 d4 = new Demo4(); d4.delete(); } }
三、实例练习-用户注册和登录
1、把javabean看了来
四、JavaBean
1、什么是javaben
JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:这个Java类必须具有一个无参的构造函数
属性必须私有化。
私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
虽然Sun公司在定义JavaBean规范时,允许Java开发人员把JavaBean设计得可以像Swing组件一样功能强大,但在实际的J2EE开发中,通常只使用到以上JavaBean最基本的特性。
JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。
2、JSP标签
在JSP中使用JavaBean :JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:
<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。
<jsp:useBean>标签:
<%@page import="cn.itcast.Person" %>
<body>
<!-- class属性必须指定bean的完整类名 -->
<jsp:useBean id="person" class="cn.itcast.Person" scope="page" />
<%
System.out.println(person.getName() + "....name");
%>
</body>
带标签体的<jsp:useBean>标签 :
<body>
<%
pageContext.setAttribute("person", new Person());
%>
<!-- 标签体内容只在实例化bean时执行 -->
<jsp:useBean id="person" class="cn.itcast.Person" scope="page" >
xxx
</jsp:useBean>
<%
System.out.println(person.getName() + "....name");
%>
</body>
<jsp:setProperty>标签 :
<body> <jsp:useBean id="person" class="cn.itcast.Person" scope="page" /> <!-- jsp:setProperty标签在工作时,它会自动把字符串转成八种基本数据类型 --> <!-- 但是jsp:setProperty标签对于复杂类型无法自动进行转换 --><!-- 所以类型要一致哟 --> <jsp:setProperty name="person" property="name" value="zhangsan" /> <jsp:setProperty name="person" property="age" value="12" /> <jsp:setProperty name="person" property="birthday" value="<%=new Date() %>" /> <!-- jsp:setProperty标签可以使用请求参数为bean的属性赋值 --> <!-- 访问http://localhost:8080/day09_JavaBean/2.jsp?name=zhangliu --> <jsp:setProperty name="person" property="name" param="name" /> <!-- jsp:setProperty标签用所有的请求参数为bean的属性赋值 --> <!-- http://localhost:8080/day09_JavaBean/2.jsp?name=zhangliu&age=21&password=123456 --> <jsp:setProperty name="person" property="*" /> <jsp:getProperty name="person" property="name" /> <% System.out.println(person.getName()); System.out.println(person.getAge()); System.out.println(person.getPassword()); %> </body>
<jsp:getProperty>标签:
<!-- 会在网页显示 -->
<jsp:getProperty name="person" property="name" />
如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。 所以开发的时候,用这个取数据,要先做判断的。
Person.java:
package cn.itcast; import java.util.Date; public class Person { private String name; private String password; private int age; private Date birthday; public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
相关文章推荐
- web day12 JSP三大指令,九个内置对象,动作标签,JavaBean(包含内省),EL表达式,函数库
- java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
- jsp+servlet+jdbc+mysql的增删改查心得
- jsp中的javabean标签
- JDBC+Servlet+JSP实现基本的增删改查(简易通讯录)
- JavaBean-jsp标签和el表达式
- JavaBean-jsp标签和el表达式
- java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
- JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用
- JSP---JavaBean的使用-jsp:useBean标签相关
- JSP+JDBC实现增删改查
- JSP---JavaBean的使用-jsp:useBean标签相关
- Web入门之JDBC连接数据库Servlet+Jsp实现增删改查
- jsp+servlet+jdbc实现对数据库的增删改查
- JDBC+Servlet+JSP整合开发之28-JSP_标准标签(JSTL)
- JavaBean中的<jsp:getProperty>标签与<jsp:setProperty>标签
- JavaBean--jsp标签jsp:setProperty用法
- JSP与JavaBean相关的动作标签
- JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- JavaBean与Jsp、在JSP中使用JavaBean(<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签)