我试图检索数据我选择从mysql和过滤表我选择的项目我选择的项目我创建了一个列表这个列表我试图添加它所选择的项目,但我设置一个带下划线的错误No Suitable Found for添加字符串 这是我的main.java包含我使用的代码
List<Menu> listItem = new ArrayList<Menu>();
if (insertedNumberOfCovers) {
Menu m = new Menu();
m.getAllRows();
while (orderNotFinished) {
System.out.println("Please Choose Item From Menu List");
input = new Scanner(System.in);
itemChosen = input.nextLine();
boolean insertedMenuItemId = db.goTodataBase.checkMenuItemInDB(itemChosen);
if (insertedMenuItemId) {
System.out.println("You Choose Item ID: " + itemChosen);
listItem.add(m.getAllRows(itemChosen));
System.out.print("Do you need to add more Items ? ");
hasFinished = input.nextLine();
orderNotFinished = hasFinished.equals("yes");
} else {
System.out.println("Item Chosen doen't exist");
}
}
这是我从中检索数据的Menu.java / * *要更改此许可证标题,请在“项目属性”中选择“许可证标题”。 *要更改此模板文件,请选择“工具”|模板 *并在编辑器中打开模板。 * /
package enitities;
import javax.swing.JTable;
public class Menu {
private int Menu_Id;
private String Name;
private float Price;
private String Type;
private String Category;
public int getMenu_Id() {
return Menu_Id;
}
public void setMenu_Id(int Menu_Id) {
this.Menu_Id = Menu_Id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public float getPrice() {
return Price;
}
public void setPrice(float Price) {
this.Price = Price;
}
public String getType() {
return Type;
}
public void setType(String Type) {
this.Type = Type;
}
public String getCategory() {
return Category;
}
public void setCategory(String Category) {
this.Category = Category;
}
public void getAllRows() {
db.goTodataBase.printData("menu");
}
public Menu getAllRows(Menu itemChosen) {
db.goTodataBase.printData("menu");
return itemChosen;
}
public String getValueByName(String itemChosen) {
String strSelect = "select Menu_Id from menu"
+ "where name=" + Name;
return itemChosen;
}
}
这个用于打印表值的方法
public static void printData(String tableNameOrSelectStatement) {
try {
setConnection();
Statement stmt = con.createStatement();
ResultSet rs;
String strSelectPart = tableNameOrSelectStatement.substring(0, 4).toLowerCase();
String strSelect;
if ("select ".equals(strSelectPart)) {
strSelect = tableNameOrSelectStatement;
} else {
strSelect = "select * from " + tableNameOrSelectStatement;
}
rs = stmt.executeQuery(strSelect);
ResultSetMetaData rsmd = rs.getMetaData();
int c = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= c; i++) {
if (i > 1) {
System.out.print(", ");
}
String columnValue = rs.getString(i);
// System.out.print(columnValue + " " + rsmd.getColumnName(i));
System.out.print(columnValue + " ");
}
System.out.println("");
}
} catch (Exception e) {
Tools.msgBox(e.getMessage());
}
}
此行中的错误
listItem.add(m.getAllRows(itemChosen));
答案 0 :(得分:1)
类型错误对我来说非常清楚:
Menu.getAllRows(...)
返回String
。
listItem.add(...)
以Menu
为参数。
String
不是Menu
。因此,您有类型错误。
那说:你有很多很多其他错误的代码。违反标准Java命名约定的名称,不做任何有用的方法(为什么getAllRows
将Object
作为参数但只是将其转换为String
以返回它? ),使用float
存储货币值,可能还有更多。