Excel-Intelij Idea-Posgresql

231
12 августа 2017, 01:47

добрый день помогите отладить программу. есть три класса Consumer, Parser, Connection. Необходимо распарсить таблицу excel в объект класса consumer и залить это все в pgsql, распарсить получилось а вот с заливкой проблема, код прилагаю.

package classes;
public class Consumer {
    int id;
    String name;
    String type;
    int abonentId;
    public Consumer(){}
    public Consumer(int id, String name, String type, int abonentId) {
        this.id = id;
        this.name = name;
        this.type = type;
        this.abonentId = abonentId;
    } }
    package classes;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
public class Parser {
    public static ArrayList<Consumer> parse(String name) {
        Consumer consumer ;
        ArrayList <Consumer> listConsumer = new ArrayList<Consumer>();
        InputStream in = null;
        HSSFWorkbook wb = null;
        try {
            in = new FileInputStream(name);
            wb = new HSSFWorkbook(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow row ;
        Iterator<Row> rows = sheet.rowIterator();
        while (rows.hasNext()) {
            row = (HSSFRow) rows.next();
            consumer = new Consumer( (int)row.getCell(0).getNumericCellValue(),
                    row.getCell(1).getStringCellValue(),
                    row.getCell(2).getStringCellValue(),
                    (int)row.getCell(3).getNumericCellValue());
            listConsumer.add(consumer);
        }
        return listConsumer;
    }
}
    package classes;
import java.sql.*;
import java.util.ArrayList;
/**
 * Created by ApotinV on 11.08.2017.
 */
public class Connector {
    public static final String URL = "jdbc:postgresql://localhost/Test?user=postgres&password=admin";
    public static final String USERNAME = "postgresql";
    public static final String PASSWORD = "admin";
    public static void PushDB(ArrayList<Consumer> list){
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(URL);
            if (!connection.isClosed())
                System.out.println("Связь установлена");
           PreparedStatement preparedStatement;
           for (int i = 0; i < list.size(); i++) {
                preparedStatement = connection.prepareStatement("INSERT INTO nro_consumer (id_, name_, type_, abonentid_) VALUE (?,?,?,?);");
                preparedStatement.setInt(1, list.get(i).id);
                preparedStatement.setString(2, list.get(i).name);
                preparedStatement.setString(3,list.get(i).type);
                preparedStatement.setInt(4, list.get(i).abonentId);
                preparedStatement.executeUpdate();
                preparedStatement.close();
            }
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
    package classes;
import java.util.ArrayList;
public class main {
    public static void main(String... args){
        ArrayList<Consumer> list =
                Parser.parse("testfile.xls");
        Connector.PushDB(list);
        //System.out.println(list.get(1).id);
    }}

Инсерт работает если писать в PGAdmin. Выдает ошибку

Answer 1

Необходимо выставить диалект SQL dialect(s) configured in File > Settings > [Project Settings] > SQL Dialects. Сама ошибка подтерла буква S в VALUES. В целом код рабочий

READ ALSO
Валидация с регулярным выражением

Валидация с регулярным выражением

У меня на полях есть валидация и мне нужно вникнуть как она делается что бы переделать какие то моменты под себяВот моя регулярка

281
Как закрепить ленту при скроллинге меню?

Как закрепить ленту при скроллинге меню?

Как закрепить ленту, пока я скроллю меню?

217
Поиск индекса класса через javascript

Поиск индекса класса через javascript

Есть такая структура у сайта, и необходимо через javascript выполнить поиск по номеру класса item_0000000(где 0-индекс класса)Индекс у всех разный, возможно...

253