1

ヘルプ!私はクラス プロジェクトに取り組んでおり、Java サーブレットを使用してデータベースに情報を挿入する必要があります...はい、Java サーブレットでなければなりません。コードはほぼ正しいのですが、コンパイルしようとすると不正な式の開始エラーが発生します。

コードは次のとおりです。

    //This servlet processes the user's registration and redirects them to the catalog.

// Load required libraries
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class DatabaseAccess extends HttpServlet{

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // JDBC driver name and database URL
      static final String JDBC_DRIVER="com.mysql.jdbc.Driver";  
      static final String DB_URL="jdbc:mysql://localhost/dvdsite";

      //  Database credentials
      static final String USER = "user";
      static final String PASS = "";

      try{
         // Register JDBC driver
         Class.forName("com.mysql.jdbc.Driver");

         // Open a connection
         conn = DriverManager.getConnection(DB_URL,USER,PASS);

         // Execute SQL query
         stmt = conn.createStatement();
         String sql;
         sql = "INSERT INTO dvdsite VALUES username, password, email";
         ResultSet rs = stmt.executeQuery(sql);

         // Clean-up environment
         rs.close();
         stmt.close();
         conn.close();
      }catch(SQLException se){
         //Handle errors for JDBC
         se.printStackTrace();
      }catch(Exception e){
         //Handle errors for Class.forName
         e.printStackTrace();
      }finally{
         //finally block used to close resources
         try{
            if(stmt!=null)
               stmt.close();
         }catch(SQLException se2){
         }// nothing we can do
         try{
            if(conn!=null)
            conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }//end finally try
      } //end try
     }
     } 

誰か助けてくれませんか?私は何日もこれに苦労してきました!

4

4 に答える 4

2

静的な最終宣言は、メソッド呼び出しの外にある必要があります-クラス内だけです。

public class DatabaseAccess extends HttpServlet{
 // JDBC driver name and database URL
      private static final String JDBC_DRIVER="com.mysql.jdbc.Driver";  
      private static final String DB_URL="jdbc:mysql://localhost/dvdsite";
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
于 2013-10-20T17:33:23.700 に答える
1

1) これは挿入クエリを記述する適切な方法ではないと思います:-

sql = "INSERT username, password, email INTO dvdsite";

次のように変更できます:-

sql = "INSERT INTO dvdsite values(username, password, email)";

テーブルに 3 つの列しかないと仮定するとdvdsite 、列名も指定する必要があります。

2)また、static final宣言はクラス内にある必要があります。つまり、メソッドの外に作成してください。

public class DatabaseAccess extends HttpServlet{

      private static final String JDBC_DRIVER="com.mysql.jdbc.Driver";  
      private static final String DB_URL="jdbc:mysql://localhost/dvdsite";
    private static final String USER = "user";
    private static final String PASS = "";
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {

3)すべてを変更した後にエラーが発生しているとコメントしたように。これは、semicolon ;ここが欠落しているためです:-

   throws ServletException, IOException;
于 2013-10-20T17:31:16.707 に答える