无重复的java sql插入
我是使用java编写sql的新手。我可以创建如下表:无重复的java sql插入,java,mysql,sql-server,primary-key,sql-insert,Java,Mysql,Sql Server,Primary Key,Sql Insert,我是使用java编写sql的新手。我可以创建如下表: String queryCreateBookTable = "create table Book (" + "isbn char(13) not null," + "author char(30)," + "title char(30)," + "subject char(30)," + "primary key(isbn))"; 我想从包含许多行的给定数组中插入一些行。所以我尝试了这个代码,但
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() + "')";
}
}
}
public int insertBook(Book[]books)
{
int结果=0;
int-art=0;
字符串查询=null;
字符串[]depo=null;
while(书籍[art].getIsbn().length()=13)
{
如果(艺术==0)
{
depo[0]=书籍[0]。getIsbn();
}
对于(int i=0;i您需要唯一的ISBN,因此您可以:
- 执行插入,让它失败,捕获
SQLException
(忽略重复项)并继续(可能很昂贵)
- 预筛选集合。例如,使用
java.util.Set
删除重复的ISBN(脆性方法)
- 事先检查数据库中是否已经存在ISBN。基本上先进行选择,只有在得到空的
ResultSet
时才进行插入(可能最好)
如果不存在,您的要求是插入。您可以使用插入忽略
如果主密钥存在并且您想更新,如果主密钥存在,您可以使用上面链接中描述的重复密钥更新时插入
对于检查空条件,您必须使用if条件进行空检查,如果它为空,则跳过当前记录并继续下一个记录这不是它最初的工作方式吗?当您插入重复的isbn时,它不应该插入您的意思是构造一个只为插入指定特定字段的查询,n不是全部吗?我不想插入isbn已存在于中的行query@YavuzSelimKartalisbn是主键,插入就会失败。这正是我在评论中的意思,让插入失败吧,反正它是主键