资源描述
JDBC
1、JDBC开发的基础:
»装入jdbc驱动程序
»创建与数据库的连接
»创建语句对象---Statement
|PreparedStatement
»利用语句对象执行sql语句得到结果
»处理结果
»jdbc应用结束
2、JDBC常用的接口:
»使用java.sql包
»接口
—DriverManager
—Connection
—Statement
—PreparedStatement
—ResultSet
3、我们现在使用Access数据库进行举例:
第一步:加载数据库驱动
String DBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”;
Try{
Class.forName(DBDriver);
}
Catch(Exception e){
System.out.println(“驱动加载失败!”);
}
第二步:连接数据库
String url = “jdbc:odbc:textdb”;
Connection conn = null;
Try{
con = DriverManager.getConnection(url);
//这里主要是数据库没有设置密码,要是设置了密码的话,就要使用下面的。
//con = DriverManager.getConnection(url,id,password);
}
Catch(Exception e)
{
System.out.println(“数据库连接失败!”);
}
第三:对数据库进行操作
※主要涉及到的就是:Statement和PreparedStatement接口。
//定义用于操作数据库的Statement对象,并且通过Connection对象实例化Statement对象。
Statement stmt = null;
Try{
Stmt = conn.createStatement();
}
Catch(Exception e)
{
Out.Println(“数据库操作失败!”);
}
※※
这样之后我们就可以使用这个实例化好的对象执行SQL 语句。
第四步:执行SQL语句
—stmt.executeUpdate(sql);
·insert
·update
·delete
—stmt.executeQuery(sql);
·select使用,返回ResultSet实例化对象。
String sql = “”;
Try{
Sql=“insert into tabl(name,password,age) values (‘zhangsan’, ’1234’,’50’)”;
Stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
Catch(Exception e)
{
Out.println(“操作失败:”+ e);
}
第五步:结果集ResultSet的处理
—使用getXXX()方法可以得到不同类型的结果值(参数可以是字段或者编号名)。
—next()方法可以是游标移动到下面的一条记录。
※结果集的处理是放在查询当中产生的
<%
ResultSet rs = null;
Try{
Stmt = conn.createStatement();
Sql =”select id, name,password,age from person ”;
Rs = stmt.executeQuery(sql);
%>
<table border=”1”,width=”80%”>
<tr>
<td>ID</td>
<td>姓名</td>
<td>密码</td>
<td>年龄</td>
</tr>
<%
While(rs.next())
{
Int id = rs.getInt(“id”);
String name = rs.getString(“name”);
String password = rs.getString(“password”);
Int age = rs.getInt(“age”);
}
%>
<tr>
<td><%=id%></td>
<td><%=name%></td>
<td><%=password%></td>
<td><%=age%></td>
</tr>
<%
}
Catch(Exception e)
{
Out.println(“数据库操作有误!”);
}
Try{
rs.close();
stmt.close();
conn.close();
}
Catch(Exception e)
{
Out.println(“关闭出错!”);
}
%>
※※
我们注意到现在这里可以使用数字:1,2,3,4来表示id,name,password,age
第六步:关闭操作
首先关闭结果集:(ResultSet)
然后关闭操作集:(Statement)
最后关闭数据库的连接:(Connection)
※※Statement 和PreparedStatement:
如果我们使用Statement的话,我们在输入内容的时候,如果我们加入了“’”的话我们便会看见程序发生错误,这样我们就要使用PreparedStatement来解决,他是Statement的子接口。(在开发当中,建议大家使用PreparedStatement对象对数据库经行操作)
»看看他的使用:
首先sql语句就要改变:
String sql = “insert into person (name,password,age) values(?,?,?)”;
然后再看怎么样进行处理:
PreparedStatement pstmt = null;
pstmt = conn.preparedStatement(sql);
//向变量当中设置内容
pstmt.setString(1,name);
pstmt.setString(2,password);
pstmt.setInt(3,age);
//更新数据库
pstmt.executeUpdate();
※※以上讲的是jdbc1.0的使用,同时也是我们要掌握的,另外我们还要掌握2.0的使用,在这个里面有两个内容很重要:批处理和移动游标。
· 游标的操作性能很差,建议不要使用。
· 重点了解批处理的概念。
根据上面的基本的流程,我们就可以使用他来进行批处理:
try
{
// 声明结果集可上下移动
stmt = conn.createStatement() ;
// 取消自动提交
conn.setAutoCommit(false) ;
// 编写批处理语句
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_A','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_B','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_C','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_D','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_E','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_F','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_G','zzzzzz',28)") ;
stmt.addBatch("INSERT INTO person (name,password,age) VALUES ('LXH_H','zzzzzz',28)") ;
// 执行批处理语句
stmt.executeBatch() ;
// 如果没有异常,则执行此段代码
// 提交事务,真正向数据库中插入数据
mit() ;
}
catch(Exception e)
{
// 如果不成功,则将数据库回滚
try
{
conn.rollback() ;
}
catch(Exception e1)
{}
out.println("操作数据库失败!!!") ;
}
JavaBean
※ JavaBean就是一个java类,也就意味着,java类的一切的特征都是适合它的,即可以使用java的封装,继承,多态;此javabean没有图形显示代码,只是完成基本业务逻辑。
在实际的开发当中:
(1) 使用javabean封装将可重复调用的代码(通过开发不断的积累)。
(2) 可以利用javabean封装事务逻辑,进行数据库操作等,可以很好的实现业务逻辑和前台程序(jsp)的分离。
{
显示:jsp页面
业务逻辑:javabean
※ 如何编写javabean:
·javabean必须放在一个包中。
·javabean必须声明成public class类型—>保证文件名和类名相同。
·所有的属性必须封装。
·设置和取得属性可以使用setter,getter
·使用jsp标签去调用javabean时,必须有一个无参的构造方法。
※※ 这里我们要补充另外的一个东西:
Java程序的打包编译:javac –d . Simple.java
※Javabean开发完成之后,在jsp当中的调用方式:
»使用<%@ page import=””%>导入指令进行导入:
实际上WEB-INF/classes是一个classpath路径,所有的class文件只要是放在这个目录下面都会被访问到。这种方式跟其他类的调用方式是一样的。
»使用jsp的标签进行调用:
这个时候我们不使用导入包,而是使用标签:
<jsp:useBean=
id=”sb” —表示实例化对象的名称
type=”page” —表示使用范围
class=”com.fangfang.bbs.SimpleBean” —对象所属的包.类名成为路径
/>
注意:正是在使用标签的时候我们用到了id所以就要求javabean当中一定要有一个无参的构造方法。
※使用下面的方法可以代替掉一切的setter方法的调用:
<jsp:setProperty name=”sb”,Property=”*”/>
·name:表示已经声明过的javabean对象的id。
·Property:表示要设置的属性,如果为“*”表示自动匹配。
展开阅读全文