⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isql.java

📁 张新曼 精通JSP Web 开发技术与典型应用 随书光盘源码
💻 JAVA
字号:
package ch13;

import java.lang.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class ISQL extends HttpServlet {

	private Connection conn; //数据库连接公用对象

	//初始化。完成数据库连接对象属性设置、建立连接等工作。
	public void init() throws ServletException {
		try {
           //设置URL连接
			String URL = "jdbc:mysql://localhost:3306/test";
			//设置用户名
			String username = "root";
			//设置用户密码
			String password = "123456";
			//建立数据库连接
			//加载com.mysql.jdbc.Driver驱动程序
			Class.forName("com.mysql.jdbc.Driver");
			//建立连接
			conn = DriverManager.getConnection(URL, username, password);
		} 
		
		catch (ClassNotFoundException ex) {
			//MySQL数据库JDBC驱动程序异常处理
			System.out.println("找不到MySQL数据库JDBC驱动程序!");
		} 
		
		catch (SQLException ex) {
			//数据库连接错误处理
			System.out.println("数据库连接错误: " + ex.getMessage());
		}
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		String sqlcmd = request.getParameter("sqlcmd"); //获得传递过来的SQL命令
		String rtn = "";   //查询结果初始化为空
		if (sqlcmd==""||sqlcmd==null) 
			return;
		sqlcmd = sqlcmd.trim();              //过滤空格等字符		
		String sqlType = sqlcmd.substring(0, 6);//取SQL命令关键字
		sqlType=sqlType.toLowerCase(); 		
		try {
			Statement stmt = conn.createStatement();//创建Statement实例stmt
						
			//如果是select查询命令,返回HTML表格形式的结果集数据
			if (sqlType.equals("select")) {
				ResultSet rs = stmt.executeQuery(sqlcmd);
				// 将结果集数据转换为HTML表格形式
				rtn = getHtmlData(rs); 
				
			} else {
				int i = stmt.executeUpdate(sqlcmd);//执行命令
				if (i != 0) 
                  //处理INSERT、UPDATE或DELETE命令
					rtn = "<tr><td>(" + sqlcmd+")SQL命令执行成功。<br>" + "已更改" + i + " 行数据。"
							+ "</td></tr>";
				else
				  //处理CREATE,DROP,ALTER、存储过程等命令
					rtn = "<tr><td>(" + sqlcmd+")SQL命令执行成功." + "</td></tr>";
			}
			stmt.close();
		}
		catch (SQLException ex) {
			rtn = "<tr><td>执行SQL命令时遇到错误:<br>" + ex.getMessage()
					+ "</tr></td>";
		}
        
		//获得用户session
		HttpSession ses = request.getSession();
		//设置变量rtn和sqlcmd,将查询结果返回给JSP页面
		ses.setAttribute("sqlcmd", sqlcmd);
		ses.setAttribute("rtn", rtn);
		
		//控制器转发给/InternetSQL.jsp页面显示处理结果
		RequestDispatcher dispatcher = getServletContext()
				.getRequestDispatcher("/InternetSQL.jsp");
		dispatcher.forward(request, response);

	}
    
	//调用doGet函数
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		doGet(request, response);

	}

	//getHtmlData函数将结果集数据转换成为HTML表格数据输出 
	public String getHtmlData(ResultSet rs) throws SQLException {
        //得到字段描述信息
		ResultSetMetaData metaData = rs.getMetaData();
		StringBuffer hdata = new StringBuffer(); //HTML存放用字符串缓冲区
		int colCount = metaData.getColumnCount();//得到总的列数
		//将结果集中列的名称作为HTML表格列的标题
		hdata.append("<tr>");
		for (int i = 1; i <= colCount; i++)
			hdata.append("<td><b>" + metaData.getColumnName(i) + "</td>");
		hdata.append("</tr>");
		//对结果集中的每一行纪录进行转换处理
		while (rs.next()) {
			hdata.append("<tr>");
			// 将该行中的每一个列转换成一个表格单元
			for (int i = 1; i <= colCount; i++)
				hdata.append("<td>" + rs.getString(i) + "</td>");
		}
		hdata.append("</tr>");  
		return hdata.toString();  
	}
	
	public void destroy() {
		try {
			//关闭数据库连接
			conn.close();
		} 
	
		catch (SQLException ex) {
			//数据库错误处理
			System.out.println("关闭数据库连接错误: " + ex.getMessage());
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -