2014-03-05 428 views
1

我試圖使用預準備語句插入到多個數據庫和表中。是否可以插入多個數據庫和表? 這是我試過的代碼,你能告訴我下一步應該做什麼,因爲我被困在這部分。數據正在從文本框中捕獲。將數據一次插入到多個數據庫和表中

Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost /mirroreddatabase","root",""); 
Connection con1 = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/breastcancerdatabase","root",""); 
Connection con2 = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/genedetailsdatabase","root",""); 
String sql= "Insert into omimmirrored(id,genesymbol,sequencelinks)values (?,?,?) "; 
PreparedStatement pst=(PreparedStatement) con.prepareStatement(sql); 

String sql2 = "Insert into breastcancer_genename(id,symbol,geneName)values (?,?,?) "; 
PreparedStatement pst1=(PreparedStatement) con.prepareStatement(sql2); 

String sql3 = "Insert into genedetails(id,symbol,GeneDetailsLinks)values (?,?,?) "; 
PreparedStatement pst2=(PreparedStatement) con.prepareStatement(sql3); 

String sql4 = "Insert into breastcancer_synonym(id,symbol,geneName)values (?,?,?) "; 
PreparedStatement pst3=(PreparedStatement) con.prepareStatement(sql4); 
+0

您沒有使用'con1'或'con2'。另外,您可能更喜歡使用批處理。 –

+0

如果我使用這種準備狀態的方法,我將如何保存數據。 con1和con2是不同數據庫的連接 – stella

+0

不知道你一心一意做什麼,但我注意到你有con,con1,con2,你的準備陳述全都只使用con,這是錯誤的嗎?我喜歡簡單的事情,我會有4種不同的方法,每個方法都會將數據插入到自己的數據庫中。如果需要確保全部或全部沒有問題,則可以在其周圍包裝事務。但請記住,每個連接,語句都應該使用.close()方法完成,並且最好位於try catch的finally塊中。 –

回答

0

您只能使用一個連接並授予所有數據庫的連接權限,因此您可以插入所有數據庫。

對於授予權限對所有數據庫的根,你可以這樣做:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 

你只需把數據庫作爲前綴(即不是insert into breastcancer_genename你把每畝insert into breastcancerdatabase.breastcancer_genename)。

Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost /mirroreddatabase","root",""); 

String sql= "Insert into omimmirrored(id,genesymbol,sequencelinks)values (?,?,?) "; 
PreparedStatement pst=(PreparedStatement) con.prepareStatement(sql); 

String sql2 = "Insert into breastcancerdatabase.breastcancer_genename(id,symbol,geneName)values (?,?,?) "; 
PreparedStatement pst1=(PreparedStatement) con.prepareStatement(sql2); 

String sql3 = "Insert into genedetailsdatabase.genedetails(id,symbol,GeneDetailsLinks)values (?,?,?) "; 
PreparedStatement pst2=(PreparedStatement) con.prepareStatement(sql3); 

String sql4 = "Insert into breastcancerdatabase.breastcancer_synonym(id,symbol,geneName)values (?,?,?) "; 
PreparedStatement pst3=(PreparedStatement) con.prepareStatement(sql4); 

關於GRANT句子(從MySQL文檔):

GRANT語句授予權限,以MySQL用戶賬戶。 GRANT 也可用於指定其他帳戶特徵,例如使用安全連接和限制訪問服務器資源。要使用 GRANT,您必須擁有GRANT OPTION權限,並且您必須擁有您授予的 權限。

欲瞭解更多信息:http://dev.mysql.com/doc/refman/5.1/en/grant.html

+0

抱歉,但我是新的授予。你能用我的代碼解釋我嗎?我正在使用NetBeans – stella

+0

GRANT是您必須在MySQL上使用的語句,而不是Java –

+0

好吧,我明白了。但如何建立聯繫? – stella