首页 > 解决方案 > 将 LinkedList 值插入数据库

问题描述

这是我的链表

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

这是我的位置类变量

public class Location {

    String SA3Code;
    String name;

}

问题:我想在方法中插入这个 locationData LinkedList

SA3Code名称值列表应插入数据库

我尝试插入如下值,但它给出了“数据太长”的错误

 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();
}

错误

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)

标签: javamysqldatabase

解决方案


LinkedList locationData;

上面的变量是列表,所以你需要循环列表并根据链表大小进行'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 一样小。如果您的数据大小比您的列长度大,您会遇到以下问题,因此请根据您的需要更新您的列数据类型。请参考以下数据类型 数据库数据类型

谢谢


推荐阅读