0

Mysqlデータベースがあり、サーブレットで作業しています。これは私のテーブルスキーマです。

 CREATE TABLE Files (
 File_Name               VARCHAR(50),
 File_Data                Blob ,
 File_Date          VARCHAR(20),
 File_Course_Code       VARCHAR(45) REFERENCES Course(Course_Code) ,
 PRIMARY KEY (File_Name , File_Date, File_Course_Code)
  );

そして、サーブレットコードは次のとおりです。

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    ServletOutputStream os = response.getOutputStream();
    try {
        InputStream uploadedFile = null;

        DiskFileUpload fu = new DiskFileUpload();
        // If file size exceeds, a FileUploadException will be thrown
        fu.setSizeMax(10000000);

        List fileItems = fu.parseRequest(request);
        Iterator itr = fileItems.iterator();

        while (itr.hasNext()) {
            FileItem fi = (FileItem) itr.next();

            //Check if not form field so as to only handle the file inputs
            //else condition handles the submit button input
            if (!fi.isFormField()) {  // If the form fiel is a file
                uploadedFile = fi.getInputStream();
            }
        }

            // to get the file name:
            String fileName= "String";



            // to extract the date:
            java.util.Date now = new java.util.Date();
            String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
            String strDateNew = sdf.format(now);


            HttpSession session = request.getSession();
            String a = (String) session.getAttribute("fileccode");



            // set connection up: 
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/VC", "root", "");
            PreparedStatement stmt = null;
            stmt = conn.prepareStatement("INSERT INTO Files (File_Name,File_Data,File_Date,File_Course_Code) VALUES (?,? ?,?)");
                  stmt.setString(1,fileName);
            stmt.setBinaryStream(2,uploadedFile);
                  stmt.setString(3,strDateNew);
                  stmt.setString(4,a);
            stmt.executeUpdate();



    } catch (FileUploadException e) {
        os.print(e.getLocalizedMessage());
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        os.close();
    }
}

このエラーに関する多くの投稿を見てきましたが、ほとんどすべての投稿で、クエリの記述時に構文エラーが発生していました。構文エラーはないと思います。しかし、おそらく(File_Data)を主キーとして、デフォルトのnullが何か問題を引き起こしているのでしょうか?

4

1 に答える 1

3

カンマがありません

VALUES (?,? ?,?)

する必要があります

VALUES (?,?,?,?)
于 2012-05-11T13:33:37.753 に答える