📄 isql.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 + -