在Java中如何在不从类创建对象的情况下获取MySQL数据
我想从MySQL中获取数据,而不从类中创建对象 通常我会做类似的事情在Java中如何在不从类创建对象的情况下获取MySQL数据,java,mysql,jdbc,Java,Mysql,Jdbc,我想从MySQL中获取数据,而不从类中创建对象 通常我会做类似的事情 public ArrayList getInventoryByItemId(String ItemId) throws SQLException { ArrayList list = new ArrayList<Inventory>(); String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FR
public ArrayList getInventoryByItemId(String ItemId) throws SQLException {
ArrayList list = new ArrayList<Inventory>();
String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'";
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(sql);
while (rset.next()) {
a = new Inventory(rset.getInt(1), rset.getInt(2), rset.getString(3), rset.getString(4), rset.getTimestamp(6), rset.getString(7), rset.getString(8));
list.add(a);
}
return list;
}
public ArrayList getInventoryByItemId(String ItemId)抛出SQLException{
ArrayList=新建ArrayList();
String sql=“选择iid,i.uid,item_数据,item_id,i.ctime,用户名,性别,从库存中我加入用户u,i.uid=u.uid,其中item_id='“+ItemId+”;
语句stmt=con.createStatement();
ResultSet-rset=stmt.executeQuery(sql);
while(rset.next()){
a=新库存(rset.getInt(1)、rset.getInt(2)、rset.getString(3)、rset.getString(4)、rset.getTimestamp(6)、rset.getString(7)、rset.getString(8));
列表.添加(a);
}
退货清单;
}
问题是因为Inventory
对象没有来自联接用户表的用户数据,我无法创建新的Inventory
我只想自动创建一个包含所有数据属性的对象,我可以使用列名访问它
谢谢你如果我有你的问题
您可以创建新映射(HashMap I reccomend)并使用列名或索引作为键放置值。
因此,您的列表将是地图列表
while (rset.next()) {
a = new HashMap<Integer,Object>();
a.put(1,rset.getInt(1));
..........
list.add(a);
}
while(rset.next()){
a=新的HashMap();
a、 put(1,rset.getInt(1));
..........
列表.添加(a);
}
或者,如果您知道确切的列数,您可以使用用户数组而不是映射(这样会更快)根据您所说的,我认为您的查询没有返回数据,因为库存没有与其关联的用户数据。您需要修改查询以使用左外部联接
String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i LEFT JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'"
这将允许您的查询返回库存数据,即使相应的用户数据不存在。从您的问题来看,您的主要问题是
sql
由于未满足联接条件而未返回任何记录。是吗?列表应该是什么类型?我试过HashMap list=newhashmap(),但它说add(HashMap)不是goodList list=newarraylist();它使用以下ArrayList=new ArrayList();非常感谢你!您可以在以后阅读本文,建议使用泛型。对不起,我误解了这个问题。您可以使用HashMaps只存储列数据。