如何从Java中的数据库中检索每行和每列的数据

时间:2017-07-17 05:44:35

标签: java

我是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;
    }
}

3 个答案:

答案 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。