2013-05-18 5 views
0

좋아, ObservableList와 함께 작업 중이므로 잘 작동하지만 이제 관찰 가능 목록을 사용하여 SQL 데이터베이스 테이블에 행을 삽입하고 행을 업데이트해야합니다. JavaFX와 SQL 데이터베이스 간의 작업에 대한 정보는 거의 찾지 못했습니다 ... 모든 데이터 테이블의 예제에는 Java 코드로 작성된 데이터가 있습니다.ObservableList에서 SQL 테이블 삽입/업데이트

Update sql database from FoxPro data on Glassfish server

하지만 내 상황에 적용하지 않았다 :이 게시물에 "업데이트 SQL 데이터베이스"를 보았을 때 나는 희망을 가지고 있었다.

그럼 내가 SQL 삽입 문을 실행할 수 있도록 ObservableList에서 읽는 코드를 어떻게 시작해야합니까? ObservableList를 사용하고 SQL 테이블을 생성/추가/업데이트 한 예제 코드를 알려 주시면 크게 감사하겠습니다.

감사합니다. 질문에 대한

업데이트 : 관련 부분은 내가하지 않아도 무엇 때문에

난 정말 여기에 관련 코드를 게시 할 수 없습니다. 그러나, 나는 내가해야 할 일을 생각하고있어이 같은 것입니다 :

분명히 내가 ObservableList에 다른 지역 내 지식을 적용하고있어,하지만 난 '돈 것을 입증하기 위해 그 일을하고
mylist.moveToFirst(); 
while (mylist.next()) { 
    make connection // think I got it 
    INSERT INTO mytable (name, address, phone) VALUES (observablename, observableaddress, observablephone // think I got this as well 

t 내 ObservableList (mylist)와 관련된 작업 방법을 알고 있습니다.

다시 한번 감사드립니다.

답변

1

오늘 느슨한 결말을 내고 있으며이 질문에 대해서는 실제로 대답하지 않았습니다. 상황에 대해 더 많이 알게되면 더 구체적인 내용으로 새로운 질문을 다시 게시했고, 그 질문에도 답변이 없었지만, 을 작성하여 여기에 답변을 게시했습니다 : Understanding my ObservableList.

그러나 깔끔하고 정돈 되려면 기억할 수 있도록 몇 가지 코드를 게시하고이 질문을보고 "해결책은 무엇입니까?!?!" "

  1. 내 연결을 열고 먼저 내 문 (들)을 준비하고자 :

    일반적으로, 그것은 다음과 같이 보입니다.

  2. 반복자를 사용하여 반복자 내에서
  3. 의 변수를 가져 와서 준비된 문에 변수를 추가하고 실행합니다.

나는 문을 배치 실행에 대해 어딘가에 읽을 수 있지만 적은 수의 업데이트가 너무 복잡한 것 같았다 각 목록으로하고있어 같은, 그래서 난 그냥 반복자 내에서 개별적으로 각 업데이트를 할.

특히, 여기에 몇 가지 코드 :

Connection con; 
con = [your connection string]; // I actually keep my connection string in its own class 
     // and just call it (OpenDB.connect()). This way I can swap out the class OpenDB 
     // for whatever database I'm using (MySQL, MS Access, etc.) and I don't have to 
     // change a bunch of connection strings in other classes. 
PreparedStatement pst; 
String insertString = "INSERT INTO People (Name, Address, Phone) VALUES (?, ?, ?)"; 
pst = con.prepareStatement(insertString); 

for(Person p : mylist) { // read as: for each Person [a data model defined in a class 
     // named Person] which in this set of statements we shall call 'p' within the list 
     // previously defined and named 'mylist' ... or "For each Person 'p' in 'mylist'" 
    String name = p.name.get(); // get the name which corresponds to the Person in this object of 'mylist' 
    String address = p.address.get(); // ditto, address 
    Integer phone = p.phone.get(); // ditto, phone. Did as integer here to show how to add to pst below 

    pst.setString(1, name); // replace question mark 1 with value of 'name' 
    pst.setString(2, address); // ditto, 2 and 'address' 
    pst.setInt(3, phone); // ditto, 3 and 'phone' 

    pst.executeUpdate(); 

그리고 그것이 어떻게 내가 해냈어. 그것이 '적절한'방법 일지 확실하지 않지만 작동합니다. 모든 학습은 여전히 ​​환영 받고 있습니다.

0

자바 FX에서는 보통

ObservableList 청취자를 지원하는 예를 : 만들 수있는 사람이 얻을, 이들은 무엇을 추가하거나 기본적으로 업데이트되었습니다 당신에게 이벤트를받을 수 있습니다. javadocs here에 좋은 예가 있습니다.

업데이트 이벤트를 얻으려면 here 목록을 만드는 방법에 '추출자'를 제공해야합니다. 이 메소드는 목록에있는 객체의 인스턴스를 가져 와서 청취하려는 속성의 배열을 제공해야합니다.

+0

감사합니다. 그러나이 방법을 통해 ObservableList를 SQL Insert 문에 연결하는 데 어떤 도움이되는지 이해할 수 없습니다. Listener 속성은 TableView에서 내 데이터를 표시하기 위해 ObservableList를 사용한 이유와 매우 유용합니다. 그러나 어떻게 그것을 삽입 문을 쓰는 데 사용할 수 있습니까? – John

+0

추가 된 항목이있는 이벤트를받은 경우 업데이트 된 항목 등을 업데이트하고 삽입 할 수 있습니다. –

+0

이 작업을 수행 한 사람에게는 이것이 완벽한 의미가 될 것이라고 확신하지만,이 대답은 나를 보지 못했습니다. 행동. 이 코드가 실제로 작동하는 코드를 가르쳐 주시겠습니까? – John