2014.09.17 周四-jdbc增删改查-javabean、jsp标签

来源:互联网 发布:toupview显微图像软件 编辑:程序博客网 时间:2024/05/18 18:52

一、程序详解

1、Connection

  1. createStatement
  2. prepareStatement
  3. prepareCall
  4. setAutoCommit
  5. commit
  6. rollback

2、Statement

  1. executeQuery查询
  2. executeUpdate增删改
  3. excute都可以,但是返回的是boolean。
  4. 批处理:
  5. execute
  6. addBatch
  7. executeBatch

3、ResultSet

  1. 获取数据:getObject,getString
  2. 对数据集进行滚动的方法:
  3. next
  4. previous
  5. absolute,定位到某一条
  6. beforFirst
  7. afterLast

4、常用数据类型转换表

5、释放资源

  1. Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象。
  2. 特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
  3. 为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。(确保这个连接还给了数据库。就算try里面有问题,finally里面的代码也会执行)
  4. 抛异常好麻烦,都不知道抛到哪里去了?都不知道关了资源和没关资源怎么看?

二、使用jdbc对数据库增删改查

1、代码

  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();} }}}
  2. src目录下:db.properties:#注释
    driver = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/day14username = rootpassword = root
  3. 增删改查。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 {@Testpublic 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);}}@Testpublic 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);}}@Testpublic 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);}}@Testpublic 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

  1. JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:
    这个Java类必须具有一个无参的构造函数
    属性必须私有化。
    私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
    虽然Sun公司在定义JavaBean规范时,允许Java开发人员把JavaBean设计得可以像Swing组件一样功能强大,但在实际的J2EE开发中,通常只使用到以上JavaBean最基本的特性。
    JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。

2、JSP标签

  1. 在JSP中使用JavaBean :
    JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:
    <jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
    <jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
    <jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。
  2. <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>
  3. 带标签体的<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>
  4. <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>
  5. <jsp:getProperty>标签:
    <!-- 会在网页显示 -->
    <jsp:getProperty name="person" property="name" />
    如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。 所以开发的时候,用这个取数据,要先做判断的。
  6. 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;}}


























0 0
原创粉丝点击