Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javaservlet执行MySQL命令_Java_Mysql_Xml_Jsp_Servlets - Fatal编程技术网

从Javaservlet执行MySQL命令

从Javaservlet执行MySQL命令,java,mysql,xml,jsp,servlets,Java,Mysql,Xml,Jsp,Servlets,我试图让servlet输出用户输入的SQL命令的结果。现在,servlet可以正确地检测命令何时不包含“选择”、“插入”或“删除”,并输出错误消息。当命令有效时,不会输出任何内容。我知道这意味着我的问题可能发生在我试图连接到数据库的地方,或者我试图将输出打印到“out”的地方 databaseServlet.java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*;

我试图让servlet输出用户输入的SQL命令的结果。现在,servlet可以正确地检测命令何时不包含“选择”、“插入”或“删除”,并输出错误消息。当命令有效时,不会输出任何内容。我知道这意味着我的问题可能发生在我试图连接到数据库的地方,或者我试图将输出打印到“out”的地方

databaseServlet.java

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

@SuppressWarnings("serial")
public class databaseServlet extends HttpServlet {
    private Connection conn;
    private Statement statement;

    public void init(ServletConfig config) throws ServletException {
        try {
            Class.forName(config.getInitParameter("databaseDriver"));
            conn = DriverManager.getConnection(
                    config.getInitParameter("databaseName"),
                    config.getInitParameter("username"),
                    config.getInitParameter("password"));
            statement = conn.createStatement();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("<xml version = \"1.0\"?>");
        out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD " +
            "XHTML 1.0 Strict//EN\" \"http://www.w3.org" +
            "/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
        out.println("<html xmlns = \"http://www.w3.org/1999/xhtml\">");
        out.println("<head>");
        out.println("<title>MySQL Servlet</title>");
        out.println("<style type='text/css'>");
        out.println("body{background-color: blue}");
        out.println("</style>");
        out.println("</head>");
        out.println("<body>");

        String query = request.getParameter("query");

        if (query.toLowerCase().contains("select")) {
            //SELECT Queries
            try {
                ResultSet resultSet = statement.executeQuery(query);
                ResultSetMetaData metaData = resultSet.getMetaData();
                int numberOfColumns = metaData.getColumnCount();
                for(int i = 1; i<= numberOfColumns; i++){
                    out.printf("%20s\t", metaData.getColumnName(i));
                }
                out.println();

                while (resultSet.next()){
                    for (int i = 1; i <= numberOfColumns; i++){
                        out.printf("%20s\t", resultSet.getObject(i));
                    }
                    out.println();
                 }
            }
            catch (Exception f) {
                f.printStackTrace();
            }
        }
        else if (query.toLowerCase().contains("delete") || query.toLowerCase().contains("insert")) {
            //DELETE and INSERT commands
            try {
                conn.prepareStatement(query).executeUpdate(query);
                out.println("\t\t Database has been updated!");
            }
            catch (Exception l){
                l.printStackTrace();
            }
        }
        else {
            //Not a valid response
            out.println("\t\t Not a valid command or query!");
        }

        out.println("</body>");
        out.println("</html>");
        out.close();
    }
}
import javax.servlet.*;
导入javax.servlet.http.*;
导入java.io.*;
导入java.sql.*;
@抑制警告(“串行”)
公共类databaseServlet扩展了HttpServlet{
专用连接连接器;
私人声明;
public void init(ServletConfig config)抛出ServletException{
试一试{
Class.forName(config.getInitParameter(“databaseDriver”);
conn=DriverManager.getConnection(
config.getInitParameter(“databaseName”),
config.getInitParameter(“用户名”),
config.getInitParameter(“密码”);
statement=conn.createStatement();
}
捕获(例外e){
e、 printStackTrace();
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
println(“MySQL Servlet”);
out.println(“”);
out.println(“主体{背景色:蓝色}”);
out.println(“”);
out.println(“”);
out.println(“”);
字符串查询=request.getParameter(“查询”);
if(query.toLowerCase().contains(“选择”)){
//选择查询
试一试{
ResultSet ResultSet=statement.executeQuery(查询);
ResultSetMetaData元数据=resultSet.getMetaData();
int numberOfColumns=metaData.getColumnCount();
对于(int i=1;i

我正在使用端口3309,需要使用端口3306

问题

jdbc:mysql://localhost:3309/project4
解决方案

jdbc:mysql://localhost:3306/project4

在servlet中编写HTMl太旧了,被认为是不好的。你说得对!这只是我测试数据库的原型。最终版本将只向jsp前端页面输出查询结果(用户将看到的唯一页面),它将包含所有html元素。我只想在完成前端之前使数据库级别正常工作,并知道我有正确的输出。我真心希望您完成的版本也不会接受SQL作为get参数。一看到这一点,我就不寒而栗。再一次,这是为了帮助我解决问题不是问题。最终版本将使用post。真的,我只需要找出它没有连接到我的数据库的原因。:-/我被告知要连接到我的MySQL数据库,我应该使用端口3306,因为这是MySQL的默认端口。听起来可行吗?
jdbc:mysql://localhost:3309/project4
jdbc:mysql://localhost:3306/project4