import java.io.;
import java.util.;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class ShowItems extends Operation{
public static String MENU_NO = "1";
public ShowItems(ItemDAO model) {
super(model);
}
public void execute()throws IOException, SQLException{
ArrayList<Item> itemList = super.model.findAll();
String iListData = "";
// try {
for(Item i : itemList){
iListData = iListData +(i.getItemCode() + "," + i.getItemName()+ "," + i.getPrice() + "\n");
}
//}catch (SQLException e) {
// }
System.out.println(iListData);
}
public String getMenuNo() {
return MENU_NO;
}
public String getMenuName() {
return MENU_NAME;
}
}
public ArrayList<Item> findAll()throws SQLException, IOException, InstantiationException,IllegalAccessException, ClassNotFoundException{
DBAccess accessDatabase = new DBAccess(); Connection con = accessDatabase.createConnection(); ArrayList itemList = new ArrayList(); Statement st = con.createStatement(); String selectst = "SELECT * FROM ITEM"; ResultSet result = st.executeQuery( selectst ); while( result.next() ) { String str1 = result.getString( "itemCode" ); String str2 = result.getString( "itemName" ); int int3 = result.getInt( "price" ); Item re = new Item(str1 , str2 , int3); itemList.add(re); } result.close(); st.close(); con.close(); return itemList; }
上記メソッドをで、下記のエラーが出ました。
error: execute() in Items cannot override execute() in Operation
public void execute()throws IOException, SQLException{
^
overridden method does not throw SQLException
エラーが発生したので、ググってみたら、 無効にされた方法は、SQLExceptionを投げないと出ました。
try-catch追加や、exceptionの追加を試したのですが、エラーは消えませんでした。
overridden method does not throw SQLException
の解決法を教えて頂きたいです。
[修正後]
abstract class Operation throws SQLException, IOException {
protected ItemDAO model;
public Operation(ItemDAO model) {
this.model = model;
}
abstract public void execute() throws SQLException,IOException; abstract public String getMenuNo(); abstract public String getMenuName();
}
ご回答いただき、ありがとうございます。
Operation クラスにthrows SQLException, IOExceptionを記載してませんでしたので、追加し、Operation クラスのexecute() と
引数、型、メソッド名を同じか確認し、実行したのですが、
./ShowItems.java:21: error: execute() in ShowItems cannot override execute() in Operation
public void execute()throws SQLException, IOException {
^
overridden method does not throw SQLException
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
上記エラーが出て、エラー内容が変わりませんでした。execute()の下にエラーが出ているので、execute()に問題があると思うのですが、
わからず、すいませんが、アドバイス頂きたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/08/07 08:51