读书人

哪位高人能不能详细谈一下jsp里操作数

发布时间: 2012-01-03 22:16:06 作者: rapoo

哪位高人能不能详细谈一下jsp里操作数据库的问题?
包括数据库的封装,数据操作。

[解决办法]
先连接,用jdbc很方便的,然后写个程序就ok了,这样的程序在论坛里一堆一堆的。
[解决办法]
Jsp 操作数据库 就是通过JDBC来操作的

一般分为如下几个步骤:
1.加载注册驱动

Class.forName( "driver name "); // 里面写上具体的数据库的驱动名


2.获得连接

Connection con = DriverManager.getConnection(url,user,password); //数据库地址,用户,密码

3.获得Statement对象

Statement stmt = con.createStatement(); // 也可以使用 PreperedStatement 这个类

4.执行sql语句得到结果集

Result rs = stmt.executeQuery( "select * from tablename ");

5.对结果集进行操作

while(rs.next()) {
rs.getString(1) ;
}


大致步骤如上

具体细节参考api



[解决办法]
顶曾曾胡

12点还不睡
[解决办法]
一个基本的观点

数据库的操作不应该在JSP页面上直接操作,而是应该把它封装到类里,最起码的是得通过调用类的方法来进行操作。这样才能有效的处理异常,并且保证有足够的安全性
[解决办法]
kevinliuu(@。@) 昨天四点钟睡觉

数据库的操作操作一般的封装在DAO(数据访问对象)里面,实际上也就是一些JavaBean

比如你有一个User 用户表,你肯定要对User作一些增删改查(CRUD)的工作

所以你可以定义

public void createUser(UserVO user) ;

public UserVO getUser(long id);

public void updateUser(UserVO user)

public void delUser(long id)

当然这几个操作只是最基本的
你还可以根据你的业务需求 增加一些方法,

比如: 按某个字段获得一个User 集合的方法 等等

你可以看看有关DAO的资料 讲的比我详细多了
[解决办法]
//用于连接数据库
package a;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
public DBConnection() {
}
public static Connection getCon(){
Connection con=null;
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");//这个我用的jdbc-odbc桥
} catch (ClassNotFoundException ex) {
System.out.println( "驱动加载失败! ");
}
try {
con = DriverManager.getConnection( "jdbc:odbc:test ");
} catch (SQLException ex1) {
System.out.println( "数据库连接失败! ");
}
return con;
}
}

//这个是javaBean
package a;

public class aa {
public aa() {
}
private String a1=null;
private String a2=null;
public void seta1(String a1){
this.a1=a1;
}
public void seta2(String a2){
this.a2=a2;
}
public String geta1(){
return a1;
}
public String geta2(){
return a2;
}
}

//DAO
package a;
import java.sql.*;
import a.aa;
import a.DBConnection;
import java.util.ArrayList;

public class aaDAO {
public aaDAO(){
}
private Connection con=null;
private Statement st=null;
private ResultSet rs=null;
DBConnection cm=new DBConnection();

public ArrayList show1(){
ArrayList list1=new ArrayList();
con=cm.getCon();
try {
st = con.createStatement();
rs=st.executeQuery( "select * from 表名 ");
while(rs.next()){
aa t=new aa();
t.seta1(rs.getString(1));


t.seta2(rs.getString(2));
list1.add(t);
}
} catch (SQLException ex) {
ex.printStackTrace();
}finally{
try {
rs.close();//关闭连接
st.close();
con.close();
} catch (SQLException ex1) {
ex1.printStackTrace();
}
}
return list1;
}
}

//在jsp页面中显示数据库中的信息
<%@ page contentType= "text/html;charset=GBK "%>
<%@ page import= "java.util.ArrayList,a.aa,a.aaDAO "%>
<%!
aaDAO aD=new aaDAO();
aa d=new aa();
ArrayList list1=aD.show1();
%>
<%
for(int i=0;i <list1.size();i++){
t=(aa)list1.get(i);
%>
a1的值为: <%=list1.geta1()%>
a2的值为: <%=list1.geta2%>
<%}%>



[解决办法]
Jsp 操作数据库 就是通过JDBC来操作的

一般分为如下几个步骤:
1.加载注册驱动

Class.forName( "driver name "); // 里面写上具体的数据库的驱动名


2.获得连接

Connection con = DriverManager.getConnection(url,user,password); //数据库地址,用户,密码

3.获得Statement对象

Statement stmt = con.createStatement(); // 也可以使用 PreperedStatement 这个类

4.执行sql语句得到结果集

Result rs = stmt.executeQuery( "select * from tablename ");

5.对结果集进行操作

while(rs.next()) {
rs.getString(1) ;
}


大致步骤如上

具体细节参考api

[解决办法]
通过一个中间的dao层来封装数据库联接,具体上面说的很清楚了
[解决办法]
人家问数据库如何操作,你说什么dao层根本就没用,
[解决办法]
这都写出来高人
[解决办法]
学习
[解决办法]
JDBC Connection Pool
[解决办法]
如果一个页面要若干个数据库操作,每个操作都调用一次dao,则数据库就要打开关闭若干次,这是不是很影响效率?

这个不用担心,成熟的dao框架都会用连接池进行Connection 的管理。就是说Connection 是不关闭的,重复使用的。

建议你学习一下 Speedframework,源代码比较少,一两天就可以大概了解了。hibernate比较复杂。
[解决办法]
google,一个简单的ObjectMapping框架
[解决办法]

引用
一个基本的观点

数据库的操作不应该在JSP页面上直接操作,而是应该把它封装到类里,最起码的是得通过调用类的方法来进行操作。这样才能有效的处理异常,并且保证有足够的安全性


[解决办法]
用数据元也可以更方便呀.
[解决办法]
用连接池(ConnPool)管理 Connection ,有很多现成的做法。
就是不关闭 Connection,或每几个小时关闭一次。
使用时从ConnPool .getConn()得到Connection.
完成后用ConnPool.freeConn(conn);放回到连接池中。

这样基本上就没有打开和关闭Connection 的开销了。

[解决办法]
google,连接池
[解决办法]
写个javabean

读书人网 >Java Web开发

热点推荐