подключение к базе данных с использованием jsp

#jsp #ms-access

#jsp #ms-access

Вопрос:

 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="ISO-8859-1" import="java.sql.*"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Inline Editing: Form Controls</title>
<script type="text/javascript" src="../../lib.js"></script>
<script type="text/javascript" src="inline-editing.js"></script>
<link type="text/css" rel="stylesheet" href="Presidents.css">
</head>
<body>
<%
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        conn = DriverManager.getConnection("jdbc:odbc:Presidents");

        String sql = "SELECT PresidentID, FirstName, LastName, Bio FROM Presidents";
        stmt = conn.prepareStatement(sql);

        rs = stmt.executeQuery();
        out.write("<h1>Presidents</h1>");
        out.write("<p>Double click on any cell to edit the field. Click off the field to save your change.</p>");
        out.write("<table>");
        while (rs.next()) 
        {
            out.write("<tr id='"   rs.getString("PresidentID")   "'>");
/*line 31*/         out.write("<td class="editable" title='FirstName'>"   rs.getString("FirstName")   "</td>");
/*line 32*/         out.write("<td class="editable" title='LastName'>"   rs.getString("LastName")   "</td>");
/*line 33*/     out.write("<td class="editable" title='Bio'>"   rs.getString("Bio")   "</td>");
            out.write("</tr>");
        }
        out.write("</table>");
    }
    catch(Exception e)
    {
        out.write("failed: "   e.toString());
    }
    finally 
    {
        if (rs != null) rs.close();
        if (stmt != null) stmt.close();
        if (conn != null) conn.close();
    }
%>
</body>
</html>
  

Я получаю следующие ошибки для строк 31, 32 , 33

 The method write(String, int, int) in the type Writer is not applicable for the arguments (String, String)
Syntax error on token "editable", , expected
  

Что я должен сделать, чтобы решить эту проблему?

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

1. Прежде всего, никогда не пишите логику подключения к базе данных на jsp.

2. Гарри Джой прав, вы должны использовать сервлеты или какую-либо другую серверную логику для обработки запросов к базе данных. Обычно JSP — это просто немой модуль, который отображает данные, поступающие из серверной части. Взгляните на некоторые руководства по MVC, когда у вас будет время.

Ответ №1:

Попробуйте это:

 while (rs.next()) 
        {
            out.write("<tr id='"   rs.getString("PresidentID")   "'>");
/*line 31*/         out.write("<td class="editable" title='FirstName'>"   rs.getString("FirstName")   "</td>");
/*line 32*/         out.write("<td class="editable" title='LastName'>"   rs.getString("LastName")   "</td>");
/*line 33*/     out.write("<td class="editable" title='Bio'>"   rs.getString("Bio")   "</td>");
            out.write("</tr>");
        }
  

Вы не экранируете » в имени класса тега. Также рассмотрите мой комментарий никогда не пишите бизнес-логику на jsp. Выполните подключение к базе данных в сервлете. Jsp следует использовать только для представления.

Ответ №2:

Не заключайте свои слова в кавычки (или используйте одинарные кавычки).

Измените это:

 out.write("<td class="editable" title='FirstName'>"   rs.getString("FirstName")   "</td>");
  

к этому:

 out.write("<td class="editable" title='FirstName'>"   rs.getString("FirstName")   "</td>");
  

или это:

 out.write("<td class='editable' title='FirstName'>"   rs.getString("FirstName")   "</td>");
  

Ответ №3:

Похоже на опечатку:

 out.write("<td class="editable" ...
  

должно быть

 out.write("<td class='editable' ... 
  

вместо этого.