【发布时间】:2013-08-08 19:33:51
【问题描述】:
我是 Java 新手。我已经创建了 Products 类型的通用列表,如何将其添加到数据库中。该列表包含 Products 的对象,数据库中的列是 Products 类的字段。即使我通过 listvariable.get(0) 等来分隔列表,我也会得到对象,而不是对象中的值。
更新:使用 for 循环插入并获取每个对象的字段。有没有更好的办法
import java.util.*;
public class Products {
public static List <Products> li = new ArrayList<Products> ();
static
{
Products o = new Products (1,"Milky Way",12.0,7); // Static because
Products o1 = new Products (2,"Dairy Milk",50.0,17); // these entries
Products o2 = new Products (3,"Borunville",70.0,27); // are mandatory
Products o3 = new Products (4,"Lindt",1022.0,107);
li.add(o);
li.add(o1);
li.add(o2);
li.add(o3);
}
int ItemCode;
String ItemName;
double UnitPrice;
int AvailableCount;
public int v=3;
Products()
{}
Products (int x,String y, double c, int d)
{
ItemCode=x;
ItemName=y;
UnitPrice=c;
AvailableCount=d;
}
public String toString ()
{
return ( ItemName+" "+ ItemCode +" "+ UnitPrice + " "+ AvailableCount);
}
void addProduct()
{
li.add(this);
}
public List <Products> initProducts()
{ return li;
}
}
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
public class Shopowner {
public static void main (String ...args)
{
Products o = new Products(6,"Eclairs",12.33,5);
o.addProduct();
System.out.println(new Products().initProducts());
try
{
Connectivity.establishConnection(); // static method for db url and drivers
for (int i =0;i<4;i++)
{
Products x=Products.li.get(i);
String name=x.ItemName;
int id= x.ItemCode;
int count =x.AvailableCount;
double price = x.UnitPrice;
PreparedStatement stm = Connectivity.con.prepareStatement("insert into Products_tbl values (?,?,?,?)");
stm.setInt(1, id);
stm.setString(2, name);
stm.setDouble(3,price);
stm.setInt(4, count);
stm.executeUpdate();
}
}
catch(Exception e)
{e.printStackTrace();}
//System.out.println(new Products().li);
}
}
【问题讨论】:
-
我可以看到 3 个问题。 1)如何插入 2)如何获取值 3)如何改进代码(你的意思是什么?)也许你应该一次只解决一个问题。
-
我可以从列表中获取值,打印对象并覆盖 toString 方法就足够了。我的问题是如何将列表插入数据库。从有经验的人那里得到一些好的建议永远不会有什么坏处:)
-
我的第一个建议是创建
getItemCode()等方法来返回每个Products对象的值。看看这个例子:docs.oracle.com/javaee/6/tutorial/doc/gjbbp.html -
Java Persistence API (JPA) 用于将对象持久保存到数据库中。它是一个很好的 api,可以为你做很多工作。您的对象(产品和店主)直接映射到数据库。因此,您的 getter 和 setter 可用于获取和设置数据库中的对象。看看吧
-
PreparedStatement stm = Connectivity.con.prepareStatement("插入 Products_tbl 值 (?,?,?,?)");可以移到循环外