#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 и распечатать выданное исключение, чтобы вы могли определить проблему.