Инструкция в базе данных на Java

#java #database #jdbc

#java #База данных #jdbc

Вопрос:

привет, я написал сервлет, и он не показывает выходных данных, мой код

 @WebServlet(name="NewServlet", urlPatterns={"/NewServlet"})
public class NewServlet extends HttpServlet {
   Connection connection;
   ResultSet resultset;
   private PreparedStatement updateVotes, totalVotes, results;


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, ClassNotFoundException, SQLException {
        Class.forName( "org.apache.derby.jdbc.EmbeddedDriver" );
 connection = DriverManager.getConnection( "jdbc:derby://localhost:1527/HELLOJI","HELLO","HELLO" );
            // TODO output your page here

Statement statement=connection.createStatement();
statement.executeQuery("CREATE TABLE customers(FIRSTNAME char(50),LASTNAME char(50))");
statement.executeQuery("INSERT INTO customer("HELLO","HELLO")");

response.setContentType("text/xml;charset=UTF-8");

        PrintWriter out = response.getWriter();
        try {
            // TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Hehjhkhk</h1>");
            out.println("</body>");
            out.println("</html>");

        }
       finally  {
            out.close();
        }
    } 


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(NewServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(NewServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    } 


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(NewServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(NewServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

            @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
  

нет исключения classcast или чего-то еще. потому что, когда я прокомментировал инструкцию

 statement.executeQuery("CREATE TABLE customers(FIRSTNAME char(50),LASTNAME char(50))");
statement.executeQuery("INSERT INTO customer("HELLO","HELLO")");
  

он показывает выходные данные. я думаю, что соединение с базой данных идеальное, проблема в statement.executeQuery(); можете ли вы, пожалуйста, помочь, как устранить это исключение.

Комментарии:

1. теперь сократил код, надеюсь, кто-нибудь поможет

2. Вернитесь назад и тоже примите некоторые ответы. Это единственное, что в Stackoverflow вы можете сделать, чтобы оценить чьи-то усилия, а вы даже этого не сделали!

3. привет, я не знаю, как принять ответ в stackoverflow, я также знаю, что ты мне очень помог и ценю это, я написал комментарий под ответом с благодарственным сообщением. пожалуйста, ответьте на вопрос или скажите, как принять ответ. но я серьезно ценю усилия stackoverflow, в ad много раз обсуждается его важность в моем колледже, серьезно, отлично, теперь, пожалуйста, ответьте на вопрос

Ответ №1:

Согласно документации (доступна по адресуhttp://download.oracle.com/javase/6/docs/api/java/sql/Statement.html#executeQuery (java.lang.Строка) ExecuteQuery вызовет исключение SQLException, если инструкция SQL не выдает ни одного результирующего набора. Попробуйте вместо этого использовать executeUpdate.

Комментарии:

1. да, теперь он работает нормально. но проблема в том, что теперь, когда мне нужно получить данные, мне приходится использовать ExecuteQuery вместо executeUpdate, теперь он снова не показывает ввод. пожалуйста, помогите hw удалить это исключение sql

Ответ №2:

Это может быть из-за неправильного используемого имени таблицы. клиенты и customer в двух разных запросах.

Комментарии:

1. нет, я исправил это, теперь tablename везде является customer, но все еще получает исключение sql. я должен создать приложение для Android за 4 дня, макет готов, я должен подключить localhost к Android. пожалуйста, помогите в решении проблемы

Ответ №3:

Проблема заключается в вашем запросе со строками, которые вы закомментировали. Пожалуйста, попробуйте проверить следующее:

(1) Проверьте, нет ли типографских ошибок. customer может быть customers или наоборот, потому что имя таблицы, которое у вас есть в двух строках, отличается

(2) Проверьте версию вашего mysql. Обычно инструкция INSERT имеет вид INSERT INTO <table name> (<fields>) VALUES (<field value>) .

(3) Попробуйте поместить строки ExecuteQuery в try-catch и распечатать выданное исключение, чтобы вы могли определить проблему.