2013-03-19 13 views
0

로터스를 처음 사용합니다. Java로 Lotus 데이터베이스에서 정보를 얻을 필요가 있습니다.데이터베이스에서 로터스 가져 오기

Session session = NotesFactory.createSession(host, user, pwd); 
Database database = session.getDatabase(server, database); 

내가 정보를 원하시면 것을 가지고 : 나는 데이터베이스가 예 필드에서

field - fldContractorCode; 
form - form="formAgreement"; 

는 "ABCDE"입니다; 그러면 데이터베이스에서 정보를 얻을 수 있습니까? 정착 수식을 사용해야합니까? 또는 어떤 방법을 사용해야합니까? 고맙습니다.

UPD 나는 그런 방법을 사용하고 지금

:

DocumentCollection collection = DATABASE.search("form=\"formAgreement\""); 
Document doc = collection.getFirstDocument(); 
while(doc != null) { 
    doc.getItemValueString("fldContractorCode"); 
    doc = collection.getNextDocument(); 
} 

그리고 그것은 나를 위해 잘 작동하지만 필드 예를 들어 어떤 문서를 찾을 수 있기 때문에이 방법은 아주 편안 아니라고 생각 = "abcd"매번 수집 할 때마다 itearte해야합니다 ... 그래서 필자는 필드 값으로 문서를 찾는 방법을 묻고 있습니다. 그리고 나는 데이터베이스에서 VIEW가 무엇인지,이 VIEW 이름을 어디에서 얻을 수 있는지 이해하지 못합니다.

+0

재활용해야합니다(). –

+0

무슨 순간에? –

+1

개체가 더 이상 필요하지 않은 경우. 예를 들어 위의 루프는 메모리 부족 상태의 클라이언트/서버를 손상시킬 수 있습니다. 여기에 좋은 글이있다. http://www.bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-5-taking-out-the-garbage-java –

답변

2

, 당신은 하나 개의 라인을 변경할 수 있습니다. 최상의 성능을 얻으려면 Domino Designer를 사용하여 데이터베이스에 새보기를 추가하고 다른 대답에 제안 된 getDocumentByKey() 방법을 사용해야합니다. 이것이 옵션이 아니라면 FTSearch() 메서드 사용에 대한 Simon의 제안은 Search() 메서드보다 빠르지 만 데이터베이스에 대한 전체 텍스트 인덱스가있는 경우에만 가능합니다. 또한 검색 문자열에 약간 다른 구문이 있습니다.

1

문서를 가져 오는 방법에는 여러 가지가 있습니다.

1. 뷰의 첫 x 째 열에 fldContractorCode의 정렬 값이 들어있는 뷰에서. 서를 검색하십시오. 예를 들어

: 당신은 문서를 찾기 위해 전체 텍스트 검색을 수행 할 데이터베이스 FTSearch 방법을 사용할 수 있습니다

String key = "abide"; 
View view = db.getView("viewName"); 
Document doc = view.getDocumentByKey(key, true); 

2.

. 전체 텍스트 색인을 만들려면 데이터베이스가 필요합니다.

3. 문서의 UNID 또는 메모 ID를 알고있는 경우 getDocumentByUNID() 또는 getDocumentByID()를 사용할 수 있습니다.

귀하의 질문은 매우 광범위하므로 각 방법에 대한 샘플 코드가 자세히 나와 있으므로 Infocenter를 읽는 것이 좋습니다.

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_NOTESDATABASE_CLASS_JAVA.html

+0

어쨌든 고맙습니다. 그리고이 수식에서'form = "formContractor"WHERE fldContractoCode = "abcd"'와 같은 것을 사용하여 문서의 전체 모음이 아닌 필요한 Document를 얻을 수 있습니까? UPD. 미안해. 너의 답을 부주의하게 읽고 있었다. –

1

당신은 당신의 필드를 검색 할 (양식 없음) 문서로 드릴 다운 할 것이다.

Lotus Notes는 원하는 위치에 도달하는 데 매우 쉬운 계층 적 방법을 제공합니다. 이 순서로 객체를 생성해야합니다

Session 
Database 
View 
Document 

이의 모든 형태의 "formAgreement을"목록 당신이보기 $ (sysAgreements)라는 있다고 가정 해 봅시다. 이 같은 그 선택 수식이 될 뭔가 :

SELECT Form="formAgreement" 

당신이 이런 일을 할 것입니다 원하는 문서 또는 문서에 활용하려면 다음

Session session = NotesFactory.createSession(host, user, pwd); 
Database database = session.getDatabase(server, database); 
View view = database.getView("$(sysAgreements)"); 
Document doc = view.getDocumentByKey(VIEW_KEY); 
String fieldContent = doc.getItemValueString("fldContractorCode"); 

Notes에서 정보를 검색하는 방법은 여러 가지가 있습니다 데이터 베이스. 이것은 그들 중 하나입니다. 메모에서 getDocumentByKey를 사용하여보기를 검색하는 데 사용되는 키는 첫 번째 정렬 된 열입니다.

당신이 사용할 수있는 여러 문서를 얻고 싶다면 :

DocumentCollection docCol = view.getAllDocumentsByKey(VIEW_KEY); 

을 한 후 반복.

속도가 느리고 Notes에 약간의 고통이 있으므로 ftsearch를 피하십시오. 전망을 바라 보는 것을 좋아하십시오.

또 다른 강력한 도움말 소스는 Notes 도움말입니다. Notes Development Client가 설치된 컴퓨터에서 도움말 데이터베이스를 가져옵니다. 그러나 당신이 선택하고있는 도움의 이름에주의를 기울이면, Notes : 클라이언트, 개발 및 관리의 세 가지 도움이 있습니다. 개발은 당신이 원하는 것입니다. 데이터베이스가 많은 문서가 포함되어있는 경우

DocumentCollection collection = DATABASE.search("form=\"formAgreement\ & "fldContractorCode=\"abcd\""); 

그러나,이 느려집니다 : 기존 코드에서

관련 문제