2013-05-05 60 views
0

我想開發一個程序,您要添加一本新書(標題,作者,日期,...) 但我不想多次添加作者.. 我想程序檢查筆者在該表已經存在,如果沒有這將增加他......這裏是我的代碼:嘗試查找數據庫表中是否存在項目,如果它不存在。添加它

public void insert_bk(String m, String a, String b, String c, String d, String e) { 
    String sql="Select * from author where Full_Name='"+b+"'"; 
    System.out.println(sql); 

    try { 
     opencn(); 
     Statement st=cn.createStatement(); 
     ResultSet rs=st.executeQuery(sql); 

     while (rs.next()) { 
      String id=rs.getString("Author_ID"); 
      System.out.println(id); 
      st.executeUpdate("INSERT into book (`Book_ID`,`Title`,`Author_ID`,`Date_of_release`,`Theme`,`Edition`)"+ "VALUES ('" + m+ "','" + a+ "','" + id+ "', '" + d+ "', '" + e+ "', '" + c+ "')"); 
     } 
    } 
    catch(SQLException exp) { 
     System.out.println(exp.getMessage()); 
    } 
} 

在這段代碼,它只是檢查是否存在作者,並增加了這本書......怎麼能我認爲如果作者不存在,它會把他和書一起加入嗎?

任何想法? 預先感謝您:)

+0

要添加的書,我會說同樣的方法。 – 2013-05-05 19:30:37

回答

1

而不是使用一個while循環,你應該把rs.next()到if語句。如果調用返回false,則不存在作者並且必須插入作者。

+0

你能告訴我一個小例子嗎? – ralph 2013-05-05 19:38:57

+0

正如Linus寫道,插入作者的方式與插入書籍的方式相同。 – 2013-05-05 19:41:54

0

您可以通過在語句中添加關鍵字IGNORE來進行條件插入。取決於你使用哪個SQL數據庫的答案略有不同。我將在這裏演示MySQL和sqlite的兩種方式,但當然還有更多。

對於MySQL

INSERT IGNORE INTO authors VALUES(?,?...,?) 

SQLite的

INSERT OR IGNORE INTO authors VALUES(?,?,...,?); 
+0

我沒有插入問題...我有一個問題的條件,如果作者存在然後插入書...如果作者不存在...插入作者,然後新書...這是我遇到的問題... – ralph 2013-05-05 19:41:43

+0

所以我編輯了我的答案,以反映你正在嘗試做什麼。修訂後的答案顯示瞭如何插入作者,但如果作者已經存在,則會忽略插入。 – greedybuddha 2013-05-05 19:56:37

0

你可以做這個存儲過程

declare @i int 
Select @i=count(*) from author where [email protected] 
IF(@i < 1) 
    BEGIN 
    // INSERT 
    END 
0

這可能有助於

String query = "Select * from author where Full_Name='"+b+"'"; 
SqlCommand cmd = new SqlCommand(query, con); 
SqlDataReader rdr; 
con.Open(); 
cmd.ExecuteNonQuery(); 
rdr = cmd.ExecuteReader(); 

if (rdr.Read()) { // if you have an author 
    //do your updation code here 
} 
else { 
    //if rdr.Read() gives 0 which will be the case when our 
    //author wont exist past the code for adding an author here 
} 
相關問題