DMS DAO 프로토타입 - ServiceDAO의findAll 메서드
8930 단어 학습 노트
필드 이름
타입
비고
필드 설명
ID
NUMBER (11)
PRIMARY KEY NOT NULL
비즈니스 계정 ID
ACCOUNT_ID
NUMBER(11)
FOREIGN KEY
계정 ID
UNIX_HOST
VARCHAR2(15)
NOT NULL
서버 주소
OS_USERNAME
VARCHAR2(50)
NOT NULL
서버의 OS 계정
LOGIN_PASSWD
VARCHAR2(30)
NULL
로그인 암호
STATUS
CHAR(1)
NOT NULL
0:개통;1: 일시정지하기;2: 삭제
CREATE_DATE
DATE
NOT NULL
창설 날짜, 창설 개통
PAUSE_DATE
DATE
NULL
일시 중지 날짜
CLOSE_DATE
DATE
BULL
삭제 날짜
COST_ID
NUMBER(11)
FOREIGN KEY NOT NULL
비용 코드
테이블을 작성할 때 외부 키 구속조건은 고려하지 않으며 다음과 같이 테이블 작성 문이 표시됩니다.
CREATE TABLE SERVICE(
ID NUMBER(11) CONSTRAINT SERVICE_ID_PK PRIMARY KEY NOT NULL,
ACCOUNT_ID NUMBER(11) NOT NULL,
ACCOUNT_ID NUMBER(11) NOT NULL,
UNIX_HOST VARCHAR2(15) NOT NULL,
OS_USERNAME VARCHAR2(50) NOT NULL,
LOGIN_PASSWD VARCHAR2(30) NOT NULL,
STATUS CHAR(1) NOT NULL,
CREATE_DATE DATE NOT NULL,
PAUSE_DATE DATE,
CLOSE_DATE DATE,
COST_ID NUMBER(11) NOT NULL
);
테스트 데이터를 삽입하기 전에 기본 시간 형식을 수정합니다.
alter session set nls_date_format = 'yyyy mm dd hh24:mi:ss';
SERVICE 테이블에 테스트 데이터를 삽입하고 제출합니다.
INSERT INTO SERVICE VALUES (2001,1010,'192.168.0.26','guojing',
'12345',0,'2009 03 10 10:00:00',null,null,1);
INSERT INTO SERVICE VALUES (2002,1011,'192.168.0.26','huangrong',
'12345',0,'2009 03 01 15:30:05',null,null,1);
INSERT INTO SERVICE VALUES (2003,1011,'192.168.0.20','huangrong',
'12345',0,'2009 03 01 15:30:10',null,null,3);
INSERT INTO SERVICE VALUES (2004,1011,'192.168.0.23','huangrong',
'12345',0,'2009 03 01 15:30:15',null,null,6);
INSERT INTO SERVICE VALUES (2005,1019,'192.168.0.26','luwushuang',
'12345',0,'2012 02 10 23 :50:55',null,null,4);
INSERT INTO SERVICE VALUES (2006,1019,'192.168.0.20','luwushuang',
'12345',0,'2012 02 10 00 :00:00',null,null,5);
INSERT INTO SERVICE VALUES (2007,1020,'192.168.0.20','weixiaobao',
'12345',0,'2012 02 10 11:05:20',null,null,6);
INSERT INTO SERVICE VALUES (2008,1020,'192.168.0.20','guojing',
'12345',0,'2012 02 11 12:05:21',null,null,6);
INSERT INTO SERVICE VALUES (2009,1020,'192.168.0.20','tongxiangyu',
'12345',0,'2012 02 12 10:05:20',null,null,6);
INSERT INTO SERVICE VALUES (2010,1020,'192.168.0.20','baizhantang',
'12345',0,'2012 02 11 11:05:30',null,null,6);
INSERT INTO SERVICE VALUES (2011,1018,'192.168.0.20','moxiaobei',
'12345',0,'2012 02 11 12:05:31',null,null,6);
INSERT INTO SERVICE VALUES (2012,1018,'192.168.0.20','luxiucai',
'12345',0,'2012 02 12 12:06:30',null,null,6);
INSERT INTO SERVICE VALUES (2013,1018,'192.168.0.20','lidazhui',
'12345',0,'2012 02 13 13:07:31',null,null,6);
INSERT INTO SERVICE VALUES (2014,1015,'192.168.0.20','guofurong',
'12345',0,'2012 02 14 14:08:32',null,null,6);
INSERT INTO SERVICE VALUES (2015,1015,'192.168.0.20','xingbutou',
'12345',0,'2012 02 15 15:09:33',null,null,6);
COMMIT;
서비스 DAO 클래스를 만들고 클래스에 새 방법findAll을 만들어서 모든 업무 계정 정보를 조회합니다.findAll 방법에서 먼저 Oracle 데이터베이스에 연결된 드라이버를 등록합니다.
Class.forName("oracle.jdbc.OracleDriver");
DriverManager의 getConnection 방법을 호출하여 Connection 클래스의 객체를 가져와 연결합니다.연결 방법에는 세 가지 파라미터가 있는데 첫 번째 파라미터는 데이터베이스를 연결하는 문자열을 나타내고 데이터베이스 정보를 연결해야 한다. 예를 들어 Oracle 데이터베이스를 연결하는 연결 문자열 형식은 jdbc:oracle:thin:@: 두 번째 파라미터는 데이터베이스를 연결하는 사용자 이름을 나타내고 세 번째 파라미터는 데이터베이스를 연결하는 비밀번호를 나타낸다. 연결 데이터베이스에 따라 사용자 이름과 비밀번호가 다르다.상응하는 수정 위에서 말한 세 가지 매개 변수.
con = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:ORCL","scott", "tiger"
Connection은 응용 프로그램과 데이터베이스의 연결을 나타내며,createStatement () 방법을 호출하면 데이터베이스 조작 대상인 Statement를 얻을 수 있습니다.
stmt = con.createStatement();
Statement는 SQL 문을 실행하고 생성한 결과를 반환하는 데 주로 사용됩니다.실행 중인 SQL 문을 나타내는 매개 변수가 있는 excuteQuery 방법을 호출합니다.
ResultSet rs = stmt.executeQuery("select ID, ACCOUNT_ID, UNIX_HOST, OS_USERNAME,
LOGIN_PASSWD, CREATE_DATE from SERVIC");
ResultSet은 데이터베이스 조회 작업의 결과 세트를 나타냅니다.현재 데이터 줄을 가리키는 커서가 있습니다.처음 커서가 첫 줄에 놓이기 전에,next 방법을 사용해서 커서를 다음 줄로 이동합니다. 이 방법은ResultSet 대상이 다음 줄이 없을 때false로 되돌아오기 때문에while 순환에서 결과를 교체할 수 있습니다.ResultSet은 getXXX(String column) 방법을 제공합니다. 예를 들어 getInt(String column) 등은 현재 ResultSet 대상의 현재 줄에 지정된 열 이름의 값을 가져옵니다. 그 중에서 매개 변수column은 데이터베이스 테이블의 열 이름을 나타냅니다.열 이름에 따라 열의 데이터 정보를 얻는 것을 추천합니다.
while (rs.next()) {
System.out.println(rs.getInt("ID") + ","
+ rs.getInt("ACCOUNT_ID") + ","
+ rs.getString("UNIX_HOST")
+ "," + rs.getString("OS_USERNAME") + ","
+ rs.getString("LOGIN_PASSWD") + ","
+ rs.getTimestamp("CREATE_DATE"));
}
ResultSet은 getXXX (int column Index) 방법을 제공합니다. 예를 들어 getInt (int column Index) 등은 현재 ResultSet 대상의 현재 줄에 지정된 열 인덱스 값을 가져옵니다. 그 중에서 매개 변수인column Index는 가져올 열의 데이터가 표에서 몇 번째 열인지 표시합니다. 주의: 열 수는 1부터 시작합니다.
while (rs.next()) { System.out.println(rs.getInt(1) + "," +
rs.getInt(2) + "," + rs.getString(3) + "," + rs.getString(4)
"," + rs.getString(5) + "," + rs.getTimestamp(6)); }
데이터베이스의 연결 자원은 유한하기 때문에 사용이 끝난 후에 제때에 방출해야 한다.그렇지 않으면 자원 소모로 인해 프로그램이 마비되어 정상적으로 작동하지 못할 것이다.JDBC 대상의close 방법을 호출하면 이 대상과 관련된 시스템 자원을 방출할 수 있습니다.
rs.close();
stmt.close();
서비스 DAO 클래스 코드는 다음과 같습니다.
public class ServiceDAO {
public void findAll() {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL",
"scott", "tiger");
stmt = con.createStatement();
rs = stmt .executeQuery("select ID, ACCOUNT_ID, UNIX_HOST, OS_USERNAME,
LOGIN_PASSWD, CREATE_DATE from SERVICE");
while (rs.next()) {
System.out.println(rs.getInt("ID") + ","
+ rs.getInt("ACCOUNT_ID") + "," + rs.getString("UNIX_HOST")+ "," + rs.getString("OS_USERNAME") + ","
+ rs.getString("LOGIN_PASSWD") + ","+ rs.rs.getTimestamp("CREATE_DATE"));
}
rs.close();
stmt.close();
} catch (ClassNotFoundException e) {
System.out.println(" !");
throw new RuntimeException(e);
} catch (SQLException e) {
System.out.println(" !");
throw new RuntimeException(e);
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
}
}
}
}
TestServiceDAO 클래스 코드는 다음과 같습니다.
public class TestServiceDAO {
@Test
public void testFindAll() {
ServiceDAO serviceDAO = new ServiceDAO();
serviceDAO.findAll();
}
}
서버 주소와 서버의 OS 계정에 따라 업무 계정 정보를 조회할 수 있습니다.ServiceDAO 클래스에서findByUsernameAndHost를 생성하여 서버 주소와 서버의 OS 계정에 따라 업무 계정 정보를 조회합니다.조회할 서버 주소와 서버의 OS 계정을 설정합니다.SQL 문에서 질의의 기준을 설정하고 문자열의 결합 방법을 확인합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STL 학습노트(6) 함수 객체모방 함수는 모두pass-by-value이다 함수 대상은 값에 따라 전달되고 값에 따라 되돌아오기 때문에 함수 대상은 가능한 한 작아야 한다(대상 복사 비용이 크다) 함수 f와 대상 x, x 대상에서 f를 호출하면:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.