我是新手用java编写sql。我可以像这样创建表格:
String queryCreateBookTable = "create table Book (" +
"isbn char(13) not null," +
"author char(30)," +
"title char(30)," +
"subject char(30)," +
"primary key(isbn))";
我想从包含许多行的给定数组中插入一些行。所以我尝试了这段代码并且无法正常工作。如何在不重复主键和空状态的情况下修复它?
public int insertBook(Book[] books)
{
int result = 0;
int art=0;
String query = null;
String[] depo=null;
while(books[art].getIsbn().length() == 13 )
{
if(art==0)
{
depo[0]=books[0].getIsbn();
}
for(int i=0;i<art;i++)
{
if(books[art].getIsbn() ==depo[i])
result++;
else
result=0;
}
if(result==0)
{
query= "insert into Book values ('" +
books[art].getIsbn()+ "','" +
books[art].getAuthor() + "','" +
books[art].getTitle() + "','" +
books[art].getSubject() + "')";
}
}
}
答案 0 :(得分:1)
您需要唯一的ISBN,因此您可以:
SQLException
(忽略重复)并继续(可能很昂贵)java.util.Set
删除重复的ISBN(脆弱方法)ResultSet
时才进行插入。 (可能是最好的)答案 1 :(得分:0)
如果不存在,您的要求是插入。您可以使用insert ignore。
"INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
如果primary存在并且您想要更新(如果它存在),您可以使用insert on duplicate key update,如上面的链接所述。
要检查null条件,必须使用if条件进行空检查,如果为null,则跳过当前记录并继续下一条记录