티스토리 뷰
Lastupdate 2014. 10. 30
FLEX를 사용할때 DB와 연계를 위해 JAVA를 사용한다.
그외의 방법도 있겠지만 (JSP, PHP 등등)
그런데 FLEX 와 JAVA 사이에 또 Blazeds 와 같은 중간 매개체 가 있어야 하니.... (왕짜증...)
그래서 FLEX에서 바로 JAVA와 통신하기 위해 서블릿을 사용 (그럼 향후 FLEX가 아니더라도 클래스는 그대로 사용할 수 있지 않겠는가? ^^)
그를 위한 초석! 우선 DB컨텍션 클래스를 만들자
package drv; /** * 모듈이름 Mysql JDBC 컨넥션 * 작성일자 2011. 03. 02 * 2014. 07. 21 Select 문 필드명까지 리턴 * (Servlet 에서 사용하기 위해 수정함) * 작성자명 Hwang kyuseok * 참고 * 사용예포함 * 쿼리문 내부로직 쿼리문실행전 connect 결과 리턴후 disconnect * mysql-connector-java-5.1.6-bin.jar 드라이버위치 \java\jre6\lib\ext\ * */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; import java.util.*; public class Hmysqlconnect { //DB 접속 변수 private Connection con = null; private Statement stmt = null; private ResultSet rs = null; private String user; private String pwd; private String dbname; private String dbip; private int dbport; private String url; //String url = "jdbc:mysql://DB IP:DB Port/DB name"; /********************************************************************************************** * 생성자함수 DB접속정보 전달 * @param 0:dbip, 1:dbport, 2:dbname, 3:user, 4:pwd * ********************************************************************************************/ public Hmysqlconnect(String ...strings) { dbip = strings[0]; dbport = Integer.parseInt(strings[1]); dbname = strings[2]; user = strings[3]; pwd = strings[4]; url = "jdbc:mysql://" + dbip + ":" + dbport + "/" + dbname; } /********************************************************************************************** * 트랜잭션을 사용한 INSERT / UPDATE / DELETE 쿼리문 실행 클래스 * @param strSql[] 쿼리문 * @return 성공:쿼리문갯수, 실패:-1 * ********************************************************************************************/ public int fn_ExecuteU2(String[] strSql) throws SQLException { int icnt = 0; int iret = -1; int i; icnt = strSql.length; //배열갯수 fn_Connect(1); try { for(i=0;i <icnt;i++) { stmt.executeUpdate(strSql[i]); } iret = icnt; con.commit(); } catch(Exception e){ //catch(SQLException e) iret = -1; con.rollback(); } finally{ fn_Disconnect(1); } return iret; } /********************************************************************************************** * 트랜잭션을 사용하지 않는 INSERT / UPDATE / DELETE 쿼리문 실행 클래스 (2014.10.07추가) * @param strSql[] 쿼리문 * @return 성공:쿼리문갯수, 양수이면 개수만큼 쿼리문실행 / -이면 갯수만큼만 성공 / 0이면 처음부터 실패 * ********************************************************************************************/ public int fn_ExecuteU(String[] strSql) throws SQLException { int icnt = 0; int iret = -1; int i=0; icnt = strSql.length; //배열갯수 fn_Connect(0); try { for(i=0;i<icnt;i++) { stmt.executeUpdate(strSql[i]); } iret = icnt; } catch(Exception e){ //catch(SQLException e) iret = -1 * i; } finally{ fn_Disconnect(0); } return iret; } /********************************************************************************************** * DB SELECT 쿼리문 실행 클래스 * @param strSql 쿼리문 * @return Hmysqlconnect_ret 제너릭(클래스) 리턴 * ********************************************************************************************/ public ArrayList<Hmysqlconnect_ret> fn_ExecuteS(String strSql) { int i; int field_cnt; String[][] s;// 필드로 사용할 배열변수 ArrayList<Hmysqlconnect_ret> al = new ArrayList<Hmysqlconnect_ret>(); fn_Connect(0); // try { rs = stmt.executeQuery(strSql); ResultSetMetaData metadata = rs.getMetaData(); field_cnt =metadata.getColumnCount(); //필드 갯수 while(rs.next()){ s = new String[2][field_cnt]; //필드갯수만큼 배열공간잡기 for(i=0;i <field_cnt;i++){ s[0][i] = metadata.getColumnLabel(i+1); //필드명 s[1][i] = rs.getString(i+1); //데이터 } al.add(new Hmysqlconnect_ret(s)); } } catch(Exception e){ e.printStackTrace(); } finally{ fn_Disconnect(0); } return al; } /********************************************************************************************** * DB 연결 * ********************************************************************************************/ private void fn_Connect(int imode) { try { ////Class.forName("org.gjt.mm.mysql.Driver"); Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url,user,pwd); if(imode == 1) con.setAutoCommit(false); stmt = con.createStatement(); } catch(Exception e){ e.printStackTrace(); } } /********************************************************************************************** * DB 연결끊기 * @param imode 0-일반 1-트랜잭션 * *********************************************************************************************/ private void fn_Disconnect(int imode) { if(stmt != null) try { stmt.close(); } catch(Exception e){ } if(con != null) try { if(imode == 1)con.setAutoCommit(true); con.close(); } catch(Exception e){ } } /********************************************************************************************** * 제너릭으로 사용할 클래스 * ********************************************************************************************/ public class Hmysqlconnect_ret { public String[][] s;// 필드 배열([2][?] = 0:필드명,1:데이터) public Hmysqlconnect_ret(String[][] s) { this.s = s; } } //####################################################################### /** * 사용예 * */ public static void main(String[] args) { ArrayList<Hmysqlconnect_ret> al = new ArrayList <Hmysqlconnect_ret>(); //리턴 배열선언 //디비연결 클래스선언 (DB접속정보 파라메터) Hmysqlconnect test = new Hmysqlconnect("DBip","DBport","DBname","DBid","DBpassword"); //============================ //SELECT쿼리문 사용예 al = test.fn_ExecuteS("SELECT * FROM tbl_login ORDER BY C_name DESC"); System.out.println("레코드갯수: " + al.size() ); //행,레코드갯수 System.out.println("필드갯수: " + ((String[])al.get(0).s[0]).length); //열,필드갯수 //첫번째레코드 System.out.println("첫번째레코드 세번째필드명: " + ((String[])al.get(0).s[0])[3]);//세번째 필드명 System.out.println("첫번째레코드 세번째데이터: " + ((String[])al.get(0).s[1])[3]);//세번째 데이터 //============================= //INSERT쿼리문 사용예 String[] strSql = new String[1]; //strSql[0] = "INSERT INTO tbl_login (C_id,C_pass,C_name) VALUES('guest','1234','손님')"; strSql[0] = "DELETE FROM tbl_login WHERE C_id = ' guest' "; try { int ret = test.fn_ExecuteU2(strSql); System.out.println("결과: " + ret); } catch (SQLException e) { e.printStackTrace(); } } }
※ 실행결과
레코드갯수: 4
필드갯수: 9
첫번째레코드 세번째필드명: C_name
첫번째레코드 세번째데이터: 황규석
결과: 1
'프로그램 > JAVA' 카테고리의 다른 글
[ JAVA ] JavaFX 환경구축 과 프로젝트 생성 (0) | 2019.07.13 |
---|---|
[Java 와 R 연재 4] rJava JRI을 사용하기위한 설치및 환경설정 - 두번째 (2) | 2016.05.20 |
[ JAVA ] HashMap 해쉬맵 데이터 나열 (0) | 2015.04.22 |
[ Servlet ] JDBC를 이용한 MySql 연동 (두번째) (0) | 2014.08.11 |
[Servlet] 이클립스에서 서블릿 작성 및 배포환경 구성 (1) | 2014.06.27 |
[ JAVA ] 사용자가 작성한 소켓, 쓰레드 클래스의 동적생성 (0) | 2013.07.12 |
[ JAVA ] TCP/IP Server 소켓통신 byte를 이용한 hex값 출력 (7) | 2013.06.27 |
[ JAVA ] 자바로 구현해보는 모드버스의 crc16 체크섬 (2) | 2013.06.26 |
[ Java ] excel의 csv 파일을 읽어 2차원배열에 옮기기 (3) | 2013.04.02 |
[Java 와 R 연재 3] rJava JRI을 사용하기위한 설치및 환경설정 (14) | 2012.02.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 모드버스
- R
- 자바
- rJava
- MySQL
- C#
- 소설
- 서블릿
- Post
- 플렉스
- 티스토리 초대장
- 책
- CRC16
- 김정환
- Servlet
- SQLite
- MenuBar
- 특별법
- 안드로이드
- 한빛미디어
- 동적할당
- 세월호
- XML
- 독서
- C++Builder
- java
- Modbus
- 통계
- 쓰레드
- flex
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함