首先,在JSP页面中导入JDBC驱动:
<%@ page import="java.sql.*" %>
然后加载驱动:Class.forName("com.mysql.jdbc.Driver");
获取连接:Connection conn = DriverManager.getConnection(url, user, password);
创建Statement:Statement stmt = conn.createStatement();
执行查询:ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while(rs.next()){ out.println(rs.getString("name")); }
关闭资源:rs.close(); stmt.close(); conn.close();
网友分享1
在JSP中使用JDBC的关键是使用try-catch-finally来管理连接,避免内存泄漏。网友推荐用Connection conn = null; try{ conn = DriverManager.getConnection(...); }catch(Exception e){e.printStackTrace();}finally{if(conn!=null) conn.close();} 这样简单可靠,初学者一看就懂。
网友分享2
高效连接池推荐使用C3P0或DBCP。在JSP中配置context.xml里加Resource,页面直接用DataSource ds = (DataSource)pageContext.getServletContext().getAttribute("db"); Connection conn=ds.getConnection(); 速度快多了,不用每次new连接。
网友分享3
简单查询例子:String sql = "SELECT id,name FROM table WHERE id=1"; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ String name = rs.getString("name"); out.print(name); } 记得用preparedStatement防SQL注入:PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id=?"); pstmt.setInt(1,1);
网友分享4
插入数据:String sql="INSERT INTO users(name) VALUES('张三')"; int rows = stmt.executeUpdate(sql); out.print("插入了"+rows+"行"); 更新和删除类似,用executeUpdate。
网友分享5
分页查询超实用:String sql = "SELECT * FROM users LIMIT " + (page-1)*10 + ",10"; 结合总记录数计算页码,初学者直接抄这个。
网友分享6
事务处理:conn.setAutoCommit(false); try{ stmt.executeUpdate(...); conn.commit(); }catch(Exception e){ conn.rollback(); } 防止数据不一致。
网友分享7
用JSTL的sql标签更简单:<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" url="..." user="..." password="..." /> <sql:query dataSource="${ds}" var="rs">SELECT * FROM users</sql:query> 零代码,超级适合新手。
FAQ
Q: JSP中JDBC连接失败怎么查?
A: 检查驱动jar是否在WEB-INF/lib,url/user/pwd对不对,数据库服务开了没。
Q: 怎么避免连接泄漏?
A: 总是用finally关闭conn/stmt/rs,或者用try-with-resources(JDK7+)。
Q: PreparedStatement和Statement区别?
A: Prepared用?占位符,防注入,性能更好。
Q: 连接池怎么配置?
A: Tomcat里context.xml加Resource标签,属性name/type/driverClassName等。