Вставить значения LinkedList в базу данных - PullRequest
0 голосов
/ 25 мая 2020

Вот мой LinkedList

LinkedList<Location> locationData = new LinkedList<>();

Вот мои переменные класса Location

public class Location {

    String SA3Code;
    String name;

}

ВОПРОС: Я хочу вставить этот LinkedList locationData внутри метода

Список значений SA3Code и name , которые следует вставить в базу данных

Я пытался вставить следующие значения, но это выдает ошибку «Данные слишком длинные»

 public void InsertLocations(LinkedList<Location> locationData) throws SQLException {

    for (int i = 0; i < locationData.size(); i++) {
        statement.executeUpdate("INSERT INTO HomelessInfo.Location (SA3Code, Name) VALUES ('locationData.get(i).SA3Code', 'locationData.get(i).name')");
    }
    connection.close();
}

ERROR

Exception in thread "main" com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'SA3Code' at row 1
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
	at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1335)
	at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2108)
	at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1245)
	at Homeless.DatabaseUtility.InsertLocations(DatabaseUtility.java:42)
	at Homeless.DataFile.readRecords(DataFile.java:98)
	at Homeless.COIT20256Assignment2.main(COIT20256Assignment2.java:20)
/Users/SK/Library/Caches/NetBeans/8.2rc/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Я нашел ответ, и он сработал

 public void InsertLocations(LinkedList<Location> locationData) throws SQLException {

        for (int i = 0; i < locationData.size(); i++) {
            statement.executeUpdate("INSERT INTO HomelessInfo.Location (SA3Code, Name) VALUES ('"+locationData.get(i).SA3Code+"', '"+locationData.get(i).name+"')");
        }
        connection.close();

}
0 голосов
/ 25 мая 2020
LinkedList locationData;

Вышеупомянутая переменная является списком, поэтому вам нужно l oop список и сделать 'N' Число sql Запрос на основе размера связанного списка и выполнить запрос

 public void InsertLocations(LinkedList locationData) throws SQLException {
        connection.open();
        for(customObject : locationData){
         StringBuilder sqlquery = new StringBuilder();
         sql.append("INSERT INTO HomelessInfo.Location (SA3Code, Name) VALUES ('").append(customObject.column1).append("','").append(customObject.column2).append("'");
        statement.executeUpdate(sql.toString());
        }
        connection.close();

}

Основываясь на вашей ошибке, я узнал, что некоторое время - может быть ваш столбец базы данных - SA3Code имеет небольшой размер, как varchar. Если размер ваших данных превышает длину столбца, у вас возникла следующая проблема, поэтому обновите тип данных столбца в соответствии с вашими потребностями. Укажите следующие типы данных Database Data Types

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...