您的位置:首页 > 编程语言 > Java开发

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

2014-09-17 23:46 501 查看

一、程序详解

1、Connection

createStatement
prepareStatement
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;
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: