首页 > 解决方案 > 如何将数据字段插入数据库中的表?

问题描述

从文件名中提取特定字段信息(Pathname.java 文件的用途)后,我需要使用 JNDI 连接将这些数据字段从类 Pathnames 插入到数据库中的表(pp_invoice_file)中。我已经在服务器的 context.xml 文件中添加了相关的资源名称。

因此 COMPANY_CODE、PARTNER_CODE、INVOICE_NUMBER、FILE_NAME 和 UPLOAD_TIME 字段将插入到下表中的列中(暂时忽略 INVOICE_FILE_JSN 和 FILE_CONTENT 列)。

数据库:pp_invoice_file

你能告诉我该怎么做吗?要编写什么函数以及如何编写相应的代码?就像你能写出整个结构一样,我第一次这样做就太好了。先感谢您。

下面是 Pathnames.java 文件

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Pathnames {

    // private int INVOICE_FILE_JSN;
    private String COMPANY_CODE;
    private String PARTNER_CODE;
    private String INVOICE_NUMBER;
    private String FILE_NAME;
    private String UPLOAD_TIME;

    String[] firstMigrationFile;
    String[] secondMigrationFile;

    public void readFilename() {
        // try-catch block to handle exceptions
        try {
            File f = new File("C:\\Users\\rsaeed\\Desktop\\files");

            FilenameFilter filterFileOne = new FilenameFilter() {
                @Override
                public boolean accept(File f, String name) {
                    name = name.toLowerCase();
                    return name.endsWith(".png") || name.endsWith(".jpg") || name.endsWith(".jpeg");
                }
            };

            FilenameFilter filterFileTwo = new FilenameFilter() {
                @Override
                public boolean accept(File f, String name) {
                    name = name.toLowerCase();
                    return name.contains(".png_") || name.contains(".jpg_") || name.contains(".jpeg_");
                }
            };

            // using a File class as an array
            File[] filesOne = f.listFiles(filterFileOne);
            File[] filesTwo = f.listFiles(filterFileTwo);

            if (filesOne != null) {
                for (File fileOne : filesOne) {
                    firstMigrationFile = fileOne.getName().split("_|\\.");
                    System.out.println(Arrays.toString(firstMigrationFile));

                    COMPANY_CODE = firstMigrationFile[0];
                    PARTNER_CODE = firstMigrationFile[1];
                    INVOICE_NUMBER = firstMigrationFile[2];
                    UPLOAD_TIME = convertTimestampToDate(firstMigrationFile[3]);

                    if (filesTwo != null) {
                        for (File fileTwo : filesTwo) {
                            secondMigrationFile = fileTwo.getName().split("_|\\.");

                            if (secondMigrationFile[2].equals(firstMigrationFile[3])) {
                                FILE_NAME = secondMigrationFile[0];
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }

    public String convertTimestampToDate(String str) throws ParseException {
        Date timestamp = new SimpleDateFormat("yyyyMMddHHmmss").parse(str);
        String uploadTime = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(timestamp);
        return uploadTime;
    }

    public static void main(String args[]) {

        Pathnames p = new Pathnames();
        p.readFilename();

    }
}

下面是 MyConnection.java 文件

import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


public class MyConnection {

    private DataSource dataSource;

    public MyConnection() {
        try {

            InitialContext context = new InitialContext();
            dataSource = (DataSource) context.lookup("jdbc/popstar"); //jdbc/popstar is the resource name

        } catch (NamingException ex) {
            Logger.getLogger(MyConnection.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Connection getConnection() {
        Connection conn = null;
        try {
            conn = dataSource.getConnection();
        } catch (SQLException ex) {
            Logger.getLogger(MyConnection.class.getName()).log(Level.SEVERE, null, ex);
        }
        return conn;
    }
}

标签: javasqldatabasesql-insertjndi

解决方案


推荐阅读