我是Java的新手。 如何从数据库中检索数据并将其放在某个变量上。我考虑过数组,但数据是各种类型的。此外,数据检索使用的是另一个类的方法。
我得到了一个使用ArrayList的提示,但我不知道如何使用它。对我有任何线索或建议吗?
这是主要方法:
class JavaAppsTes {
public static void main(String[] args) {
Database app = new Database();
/* I don't know what to do here */
}
这是数据库类:
public void getMenu() {
String SQL = "SELECT * FROM menu ORDER by id_kategori";
String nama, gambar;
int id_menu, id_kategori, harga, persediaan;
int count = 0;
try (Connection conn = connect(); Statement stmt = conn.createStatement(); ResultSet cartRslt = stmt.executeQuery(SQL)) {
while(cartRslt.next()) {
id_menu = cartRslt.getInt("id_menu");
id_kategori = cartRslt.getInt("id_kategori");
harga = cartRslt.getInt("harga");
persediaan = cartRslt.getInt("persediaan");
nama = cartRslt.getString("nama");
gambar = cartRslt.getString("gambar");
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
如何将这些数据放入某些内容中,以便前端可以使用检索到的数据?
顺便说一句,因为我得到了关于ArrayList的线索,我创建了一些这样的菜单类:
public class Menu {
private int id_menu;
private int id_kategori;
private String nama;
private int harga;
private int persediaan;
private String gambar;
public Menu(int id_menu, int id_kategori, String nama, int harga, int persediaan, String gambar) {
this.id_menu = id_menu;
this.id_kategori = id_kategori;
this.nama = nama;
this.harga = harga;
this.persediaan = persediaan;
this.gambar = gambar;
}
public int getid_menu(){
return id_kategori;
}
public void setid_menu(int id_menu){
this.id_menu = id_menu;
}
public int getid_kategori(){
return id_kategori;
}
public void setid_kategori(int id_kategori){
this.id_kategori = id_kategori;
}
public String getnama(){
return nama;
}
public void setnama(String nama){
this.nama = nama;
}
public int getharga(){
return harga;
}
public void setharga(int harga){
this.harga = harga;
}
public int getpersediaan(){
return persediaan;
}
public void setpersediaan(int persediaan){
this.persediaan = persediaan;
}
public String getgambar(){
return gambar;
}
public void setgambar(String gambar){
this.gambar = gambar;
}
}
答案 0 :(得分:0)
您可以创建一个JSON数组,其中每个条目都是一个JSON对象,其中包含结果集的每个记录中的列和值的键值对:
JSONArray json = new JSONArray ();
try (Connection conn = connect(); Statement stmt = conn.createStatement(); ResultSet cartRslt = stmt.executeQuery(SQL)) {
while(cartRslt.next()) {
JSONObject row = new JSONObject();
id_menu = cartRslt.getInt("id_menu");
id_kategori = cartRslt.getInt("id_kategori");
harga = cartRslt.getInt("harga");
persediaan = cartRslt.getInt("persediaan");
nama = cartRslt.getString("nama");
gambar = cartRslt.getString("gambar");
row.put("id_menu", String.valueOf(id_menu));
row.put("id_kategori", String.valueOf(id_kategori));
row.put("harga", String.valueOf(harga));
row.put("persediaan", String.valueOf(persediaan));
row.put("nama", nama);
row.put("gambar", gambar);
json.put(row);
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
然后,稍后在您的代码中,您只需将此JSON字符串传递到UI层。
答案 1 :(得分:0)
如果你需要ArrayList在循环之前定义它,添加每个菜单并在之后返回。
public ArrayList<Menu> getMenu() {
String SQL = "SELECT * FROM menu ORDER by id_kategori";
String nama, gambar;
int id_menu, id_kategori, harga, persediaan;
int count = 0;
ArrayList<Menu> arr = new ArrayList<>();
try (Connection conn = connect();
Statement stmt = conn.createStatement();
ResultSet cartRslt = stmt.executeQuery(SQL)) {
while(cartRslt.next()) {
id_menu = cartRslt.getInt("id_menu");
id_kategori = cartRslt.getInt("id_kategori");
harga = cartRslt.getInt("harga");
persediaan = cartRslt.getInt("persediaan");
nama = cartRslt.getString("nama");
gambar = cartRslt.getString("gambar");
arr.add(new Menu(id_menu, id_kategori, nama, harga, persediaan, gambar));
}
}
return arr;
}
答案 2 :(得分:0)
要使用数组列表,您应该将方法的签名从void更改为List<Menu>
。这样,您就可以返回包含所有菜单对象的列表。
public List<Menu> getMenu() {
String SQL = "SELECT * FROM menu ORDER by id_kategori";
String nama, gambar;
int id_menu, id_kategori, harga, persediaan;
int count = 0;
List<Menu> menus = new ArrayList<>();
try (Connection conn = connect(); Statement stmt = conn.createStatement(); ResultSet cartRslt = stmt.executeQuery(SQL)) {
while(cartRslt.next()) {
id_menu = cartRslt.getInt("id_menu");
id_kategori = cartRslt.getInt("id_kategori");
harga = cartRslt.getInt("harga");
persediaan = cartRslt.getInt("persediaan");
nama = cartRslt.getString("nama");
gambar = cartRslt.getString("gambar");
menus.add(new Menu(id_menu, id_kategori, ...));
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return menus
}
至于为用户显示,您需要决定网络框架或gui。