2012-09-23 80 views
-1

我試圖製作自己的ORM框架。我從對象的值到arrayList,我試圖在一次保存它們。我必須作出循環來保存它們,但我很困惑如何做到這一點?如何使用jdbc將對象的字段保存到數據庫中

prepareteState = connect.prepareStatement(Query); 
for (int y = 1; y <= obs.size() ; y++) { 
    for(Object obj : obs){ 
     prepareteState.setObject(y, obj); 
     System.out.println(Query); 
     System.out.println(prepareteState.toString()); 
    } 
} 
prepareteState.execute(); 
+9

我不想無禮,但如果你不能使用JDBC,不知道如何在Java中使用循環,憑啥你還沒有一個製作新的ORM框架?這就像想要爬上珠穆朗瑪峯時,你甚至不能走路。 –

+0

我知道如何製作循環以及如何使用jdbc。在這個問題,我有實體惠特5列,我保存這些列arraylist中的值如何將它們保存在1次設置「insert into tableName values(?,?,?,?,?,?)?:) – user1571715

+0

如果您知道如何使用循環,則不會有兩個嵌套循環在同一個列表上迭代,其中一個從1到大小而不是從0到大小 - 如果您知道如何使用JDBC,您將會知道如何使用JDBC準備一個語句,綁定參數,並在語句上調用executeUpdate()。閱讀Java教程,他們有一個關於[collections](http://docs.oracle.com/javase/tutorial/collections/)的文章, [JDBC](http://docs.oracle.com/javase/tutorial/jdbc/) –

回答

0

感謝好建議,但我找到了解決辦法:)它比第一個想法有點不同,但是,使用一個我真的爲我工作得很好:)而不是使用prepareState和方法setObject一個StringBuilder的做字符串和執行查詢

private String makeInsertQuery(List<String> listOfColumnsNames, List<Object> listOfParameters, String tableName){ 
    StringBuilder columns = new StringBuilder(); 
    StringBuilder parameters = new StringBuilder(); 
    String query = null; 

    if(listOfColumnsNames != null && listOfColumnsNames.size() != 0 && listOfParameters != null && listOfParameters.size() != 0 && tableName != null){ 
     for(String string : listOfColumnsNames){ 
      columns.append(string + ","); 
     } 
     columns.deleteCharAt(columns.length() - 1); 

     for(Object object : listOfParameters){ 
      parameters.append ("'" + object + "'" + ","); 
     } 
     parameters.deleteCharAt(parameters.length() - 1); 

     query = "INSERT " + "INTO " + tableName + " (" + columns.toString() + ") " + " VALUES " + "(" + parameters.toString() + ")" ; 
    } 
    //TODO if you need check for null 
    return query; 
} 
相關問題