这个错误是什么? (Java数据库应用程序)

时间:2017-06-13 13:51:49

标签: java mysql database javafx

我有以下代码,我试图从我的数据库(itemName,itemId)返回数据。但它给了我以下错误:

Items() in Items cannot be applied to:
Expected         Actual
Parameters:      Arguments:

pool: com.sun.tools.javac.jvm.Pool     itemName (java.lang.String)
code: com.sun.tools.javac.jvm.Code itemId    (java.lang.String)
symtab: com.sun.tools.javac.code.Symtab     quantity (java.lang.String)
types: com.sun.tools.javac.code.Types     cost (java.lang.String)

这是我的代码:

public List<Items> getItemList() throws SQLException{
    try {
        Statement statement = connection.createStatement();
        ResultSet results = statement.executeQuery("SELECT * FROM Items");
        {

            List<Items> itemsList = new ArrayList<>();

            while (results.next()) {
                String itemName = String.valueOf(results.getString("item_name"));
                String itemId = String.valueOf(results.getString("item_id"));
                Items items = new Items(itemName, itemId); // where the error is
                itemsList.add(items);
            }

            return itemsList;
        }

    } catch(Exception e){
        e.printStackTrace();
    }

    return null;
}

是因为类型不兼容(对象对字符串)吗?如果是这样,String.valueOf ......不正确?

修改

public class Items {

// Constructor
public Items(String itemName, String itemId){
    setItemName(itemName);
    setItemId(itemId);
}

// itemName
private final StringProperty itemName = new SimpleStringProperty(this,"itemName");

public StringProperty itemNameProperty(){
    return itemName;
}

public final String getItemName(){
    return itemNameProperty().get();
}

public final void setItemName(String itemName){
    itemNameProperty().set(itemName);
}

// itemId
private final StringProperty itemId = new SimpleStringProperty(this,"itemId");

public StringProperty itemIdProperty(){
    return itemId;
}

public final String getItemId(){
    return itemIdProperty().get();
}

public final void setItemId(String itemId){
    itemIdProperty().set(itemId);
}


}

1 个答案:

答案 0 :(得分:2)

这看起来像是从错误的包导入Items类引起的问题。如果您有表单的导入声明

import some.package.name.Items ;

靠近包含第一个代码块的类的顶部,然后删除该行。

如果包含第一个代码块的类与您的Items类位于不同的包中,则需要添加一行

import the.correct.package.Items ;

代替不正确的import声明。将the.correct.package替换为包含Items类的包的名称(在Items.java中,查看第一行代码,这是一个package语句,用于定义哪个包包含{ {1}})。

对于某些背景信息,我建议Meaning of the import statement in a Java file