저번에 Beta2예제가 새로운 버전에서 안돌아가는 바람에 다시 만들었습니다-_-;
많은 분들이 안돌아간다고 하셔서 다시 만들었습니다 ㅠ
형식이 조금 바뀌었는데, 별 차이는 없었습니다.
더 편해진 것 같아요. 토큰이라는 것을 이용하네요.

http://code.google.com/p/assql/
다양한 예제와 lib파일은 이곳에서 받을 수 있습니다.

간단하게 insert와 select를 하는 예제를 만들어봤습니다.
테스트 해본 환경은 Eclpse3.4 + Flex Builder 3.0.1 + asSQL Beta 2.7에서 해봤습니다.

DB구조는 다음과 같습니다.

CREATE TABLE `products` (
`id` int(10) unsigned NOT NULL auto_increment,
`description` varchar(45) default NULL,
`price` decimal(15,2) NOT NULL default '0.00',
PRIMARY KEY USING BTREE (`id`,`price`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

INSERT INTO `products` (`id`,`description`,`price`) VALUES
(1,'Lamp','469.80'),
(2,'Table','3502.62'),
(3,'Chair','1061.12');


아래는 소스코드입니다.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="onCreationComplete()"
layout="horizontal">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import com.maclema.mysql.ResultSet;
import com.maclema.mysql.MySqlToken;
import com.maclema.mysql.Statement;
import com.maclema.mysql.Connection;
import com.maclema.mysql.events.MySqlErrorEvent;
import mx.rpc.AsyncResponder;
import mx.controls.Alert;

private var con:Connection;
private var st:Statement;
private var token:MySqlToken;
[Bindable]
private var dataAC:ArrayCollection;

private function onCreationComplete():void
{
con = new Connection("DB주소", 3306, "DB아이디", "DB비밀번호", "DB명");
con.addEventListener(Event.CONNECT, handleConnected);
con.connect("euckr");
}

private function handleConnected(e:Event):void
{
if (con != null)
{
st = con.createStatement();
}
}

private function selectResult(data:Object, token:Object):void
{
var rs:ResultSet = ResultSet(data);
dataAC = rs.getRows();
}

private function insertResult(data:Object, token:Object):void
{
Alert.show(token.description + " 삽입성공!");
selectProcess();
insertBox.visible = false;
}

private function fault(info:Object, token:Object):void
{
Alert.show("Error: " + info);
}

private function selectProcess():void
{
var token:MySqlToken = st.executeQuery(
"SELECT id, description, price FROM products");
token.addResponder(new AsyncResponder(selectResult, fault));
}

private function insertProcess():void
{
st.sql = "INSERT INTO products (description, price) VALUES (?, ?)";
st.setString(1, inputDescription.text);
st.setNumber(2, Number(inputPrice.text));
var token:MySqlToken = st.executeQuery();
token.description = inputDescription.text;
token.addResponder(new AsyncResponder(insertResult, fault, token));
}
]]>
</mx:Script>

<mx:VBox horizontalAlign="center">
<mx:DataGrid id="productDG" dataProvider="{dataAC}">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="제품명" dataField="description"/>
<mx:DataGridColumn headerText="가격" dataField="price"/>
</mx:columns>
</mx:DataGrid>

<mx:HBox width="100%" horizontalAlign="center">
<mx:Button label="SELECT" id="btnSelect"
click="insertBox.visible = false; selectProcess()"/>
<mx:Button label="INSERT" id="btnInsert"
click="insertBox.visible = true"/>
</mx:HBox>

<mx:VBox id="insertBox" height="100%" horizontalAlign="center" visible="false">
<mx:Form>
<mx:FormHeading label="정보 입력" />
<mx:FormItem label="제품명">
<mx:TextInput id="inputDescription" />
</mx:FormItem>
<mx:FormItem label="가격">
<mx:TextInput id="inputPrice" restrict="0-9,."/>
</mx:FormItem>
</mx:Form>
<mx:Button id="btnInsertProcess" label="추가" click="insertProcess()" />
</mx:VBox>

</mx:VBox>

</mx:Application>

좀 이상한 점이 con.connect("euckr")로 해야지 한글이 나오더군요. mysql에서 utf8에는 한글이 없는건가.
어쨌든 인코딩은 어려워요 ㅠ

Connection이라는 클래스를 통해 mysql정보를 이용해 con객체를 생성한다음에 Statement를 생성합니다.
그 뒤에 selectProcess메소드에서 보시면, MySqlToken이라는 클래스를 이용합니다. Statement객체의 executeQuery메소드에 쿼리문을 넣어서 실행하면 token이 발행됩니다.
이 token에 addResponder라는 메소드를 통해 AsyncResponder를 이용해 해당 function넣은 객체를 생성해서 addResponder에 집어넣습니다. 그러면 데이터를 가져오는 시점에서 넣은 function이 호출이 됩니다.

여기서 데이터를 파싱하는 부분에서 엄청 편해진 부분이있는데요.
rs.getRows();

getRows라는 메소드가 있는데, 이건 해당 데이터셋을 자동으로 ArrayCollection형으로 변환해서 리턴해줍니다.
그러면 바로 바인딩된 datagrid에 데이터가 뿌려지겠죠. 멋집니다.

insert부분도 똑같습니다.
그냥 자바문법과 비슷하다고 보면 되겠네요.
틀린 점이 있다면 이건 이벤트기반이라는 것이죠 ^^ 비동기적으로 일어납니다.
사용자 삽입 이미지

셀렉트도 잘되네요. 구글크롬에서 해봤어요. 잘 되네요.

사용자 삽입 이미지

머드초보를 2.00로 해서 입력해봅시다.

사용자 삽입 이미지

잘 들어갔네요.

PS. 실무db연동은....서버단언어와 함께하시길 바랍니다 ^^ (JAVA, C# 등등~)
머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/318
  2. 지돌스타 2008/09/03 15:35  편집/삭제  댓글 작성  댓글 주소

    좋은 정보입니다. ^^

    • 머드초보 2008/09/03 19:00  편집/삭제  댓글 주소

      보니까 asSQL버전이 올라가면서 기존 예제가 문제가 있었더라구요.
      코딩방식이 바뀌어서 다시 만들었습니다 ^^
      방문해주셔서 감사해요~ ^^
      그....기존 버전의 트랙백을 날려주셔도 돼요 ^^

  3. keril 2008/09/03 19:09  편집/삭제  댓글 작성  댓글 주소

    말씀해주신대로 mysql설정미스인듯합니다..

    그런데 잘 해결이 안되고있네요 ^^;

  4. keril 2008/09/03 19:13  편집/삭제  댓글 작성  댓글 주소

    그리고 이클립스 유로파 (eclipse-jee-europa-winter-win32) 가 실행이 안되네요
    제껏만 그런가해서 친구컴에서도 해봤는데 같은 증상....
    jvm terminated. Exit code=-1 로시작해서 꽤나긴 설명이있는데 짧은지식으로는 ㅋ

  5. 비매품 2008/09/03 22:09  편집/삭제  댓글 작성  댓글 주소

    아;; 제가 정말 초보라 그러는데;;
    굳이 이클립스가 필요한건가요? 코딩은 플렉스3 빌더에서 다 할 수 있는거 아닌가요? ㅠㅠ;

    그리고 돌려보니까...
    insert에 품목 입력하면

    Error #2044: 처리되지 않은 ioError입니다. text=Error #2031: 소켓 오류입니다. URL: DB주소

    Main Thread (Suspended: TypeError: Error #1009: null 객체 참조의 속성이나 메서드에 액세스할 수 없습니다.)
    FlexMysqlTest/insertProcess
    FlexMysqlTest/__btnInsertProcess_click

    이렇게 뜨는데 제가 뭘 빼먹은건지 궁금합니다.^^;;;;;

    • 머드초보 2008/09/04 09:03  편집/삭제  댓글 주소

      이클립스는 자바프로그래밍을 위해서 필요합니다.
      Flex는 RemoteObject를 통해서 완벽하게 java연동을 지원합니다.
      그래서 DB연동은 JAVA단에서 주로 하는데, 이것을 하려면
      이클립스가 필요합니다.

      그리고 소켓오류는 제 위에 소스를 그대로 가져다가 쓰신 것 같은데요.
      저기 DB주소부분에는 DB주소가 들어가야합니다.
      localhost나 DB서버가 작동하고 있는 서버의 IP를 적어주시면 돼요 ^^
      그리고 포트는 디폴트로 설치하셨으면 1521이고,
      DB접속ID, PW, 그리고 DB명을 넣어주시는 겁니다.

  6. 비매품 2008/09/04 09:55  편집/삭제  댓글 작성  댓글 주소

    asSQL이 자바나 php없이도 연결가능하다 그래서 이클립스가 필요없는줄 알았습니다 ^^;;
    소스 다시보니까 제가 아무것도 안하고 그냥 돌리기만 했네요 ^^;;;
    디비 공부좀 많이 해야겠습니다.ㅠㅠ 디비가 완전 꽉막혀서;;

    답글 고맙습니다^^

    • 머드초보 2008/09/04 10:11  편집/삭제  댓글 주소

      asSQL은 자바나 PHP없이 DB연결이 가능합니다.
      asSQL를 이용해서 DB연동한다면 이클립스가 필요없습니다.
      asSQL은 클라이언트에서 직접 MySQL에 접속하여 DB를 제어합니다.
      하지만, 보안상 취약점도 있고, DAO단을 따로 만드는게
      나중에 유지보수차원에서 더 좋을듯싶습니다.
      간단한 DB연동이라면 asSQL을 쓰셔도 될 듯 합니다 ^^


그나저나 팝업은 왜 맨아래에 생기는거지-_-; 우선 지금 구글 크롬으로 텍스트 큐브 글을 쓰고 있는데요. 글씨가 왜이렇게 작게 보이지-_-; 글 쓰는 창에 글씨크기가 작아요! 암튼, 속도는 최강이군요. 별 기능이 없어서 그런지 몰라도 속도는 완전 스피드합니다. 제가 자주 가는 사이트들도 다 들려봤는데 제대로 나오는 듯 하네요. 설치하자마자 FireFox부터 먹어버리려고 FireFox의 북마크를 가져오는군요-_-; 웹사이트 개발하시는 분들이 개발하면서 테스트해야하는 브라우저가 1개 더 늘었군요-_-; 이제 4대 브라우저가 아닌 5대브라우저로....-_-; 웹개발자들만 죽어날지 아니면 크롬의 위대함에 크롬에서는 테스트는 안해봐도 될런지 ^^ 지금까지 사이트들이 다 잘 나오는 것 보니 크롬에 대한 걱정은 별로 없을 것 같네요. 웹표준은 잘 지켜진 것 같네요. (설마 구글인데 웹표준 안지키겠어-_-) 그리고, 기능에서 보니까 자바스크립트 디버깅이 있던데...이건 어떻게 사용하는거죠-_-; 암튼 개발자를 위한 배려도 잊지 않았네요. 멋져요 ^^ 체감속도는 현재 4대브라우저 중에 최강인 듯 하네요. 네이버가 이렇게 빠르다니-_-; 망할 IE는 띄우는데 하드 막 긁어대고 보여주던데-_-; ps. 헉 문제가 생겼어요. 크롬으로 글을 쓰니.....줄바꿈이 안먹혀요-_-; 게다가 텍스트큐브에서 수정창을 눌렀더니....창이 작게 보여요-_-; 이건 텍스트큐브가 잘못한건가.....
머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/317
  2. 검쉰 2008/09/03 12:58  편집/삭제  댓글 작성  댓글 주소

    저도 설치해서 사용중입니다.
    ajax 관련은 눈에 띄게 빠르네요 ㅎㅎ

    • 머드초보 2008/09/03 13:02  편집/삭제  댓글 주소

      근데 제 텍스트큐브에서 크롬으로 글 쓰면 위처럼 돼요 ^^
      가독성 떨어지는-_-;


우선 네이버에 낚여서-_-;
네이버의 과도한 광고로 인하여 신청하게 되었습니다.

우선 현장에 가서 놀랐던 것이 사람이 너무 많았어요-_-;
2만명이 참가한 행사라고 하는데 보통 마라톤 대회에서도 저렇게 많은 사람이 신청하지 않아요 ^^

보통 신문사 마라톤을 가게 되면 대부분 아저씨들이나 동호회, 회사 단체에서 오시는 분들이 참 많았는데 이번 나이키 휴먼레이스 행사에서는 젊은 층이 대부분이었습니다. 남녀 커플로 뛰시는 분들도 많이 계시고, 친구들끼리 와서 뛰시는 분도 계시고 그랬어요.

우선 행사장을 가서 가장 눈에 띄는 곳이 이벤트 존이였습니다(경......경품을......-_-)
우선 Canon에서는 포토존(?)을 제공했습니다. 이건 영화제에서나 볼 수 있는.....사진을 찍을 수 있는 공간을 만들어놨더라구요. 참 멋진 아이디어입니다. 줄서서까지 사람들은 즐겁게 사진을 찍더군요.

그 다음 유엔난민기구 부스였는데 이곳에서는 마우스패드를 줬습니다.
마우스패드가 4년이 다되가는데-_-; 교체할 수 있는 기회를 주셔서 감사합니다. 패드를 지금 사용하고 있는데 매우 미끄럽네요-_-; 마우스가 마구 미끄러져요.

사용자 삽입 이미지

태권브이 마우스 패드!


다음은 cyworld가 있었습니다. 선착순으로 손수건을 나눠준 것 같았습니다만, 제가 갔을 때는 이미 매진이었습니다. 손수건 좀 많이 준비하지. 싸이월드 아이템쿠폰을 나눠주고 있었지만, 저는 싸이월드를 안해서-_-;

그 다음에는 화장품부스였는데 어떤 상표인지는 처음들어봐서 모르겠구요. 가니까 샘플을 나눠주더라구요. 남자용 여자용 따로따로 ^^ 가서 자외선차단제도 발라주고-_-;
사용자 삽입 이미지

샘플입니다. 사진으로 찍었더니 상당히 커보이네-_-; 상당히 작습니다.


그 다음은 나이키에서 신발을 팔아먹으려는 부스였는데 여기에서 이상한 이름표같은 것을 나눠줬습니다. 책가방에 이름표를 달 때 사용하는 것 같습니다.
사용자 삽입 이미지

이제 다 받고, 물품을 맡기고, 뛸 준비를 했습니다. 사람이 너무 많더군요.
보통 신문사 마라톤대회는 풀코스 먼저 뛰고, 하프뛰고, 10km순으로 출발하는데, 그래봤자 만명이 안될텐데-_-; 이 나이키휴먼레이스는 10km만 2만명이 뜁니다. 그러다보니 그룹을 30~50분그룹, 50~60분그룹, 60~70분그룹, 70이상그룹 4개로 나눠서 출발을 했습니다.

이렇게 나눠서 출발했는데도 사람과 매우 많이 부딪혔습니다. 뛰다가 한강공원에 잠깐 내려가는 길이 있었는데 이곳에서는 길이 좁아서 사람들이 다 내려가니 뛸 수 없는 상황이 오더군요. 암튼 뛰면서 사람들과 계속 부딪혔네요. 그리고, 식수대에서도 물먹기도 참 힘들었습니다.

뛰면서 재미있었던 것은 뛰는 내내 음악이 있었습니다. 어떤 봉고차에서 드럼을 치는 사람도 있었고, 가는 길에 공연을 하시는 분도 있었고, 어디에서는 음악이 나오는 자동차도 있었어요. 알고보니 마라톤과 음악을 결합하려고 한 것이라고 하더군요. 암튼, 새로운 경험이었습니다. 좀 사람이 많았던 것이 흠이지만요 ^^

완주를 하니 팔찌를 줬습니다. 보통 신문사 마라톤에서는 메달을 주는데....이 팔찌는......
팔에 차라는 건지......눈으로 보라는건지.......차면 엄청 안 이쁜 것을 볼 수 있습니다. 혼자서 차기도 힘들어요 ^^
사용자 삽입 이미지

팔찌들어있는 케이스

사용자 삽입 이미지

팔찌 완전 노 간지-_-;

그리고 간식에는 빵과 파워에이드, 초코바, 바나나를 주는군요.

사람이 좀 많았지만, 보통 신문사 마라톤보다는 훨신 준비를 많이 하고 잘 되어있었던 것 같습니다.
앞으로도 이런 행사있으면 참가하고 싶군요.

PS. 온몸이 쑤셔요-_-;
머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/316
  2. 참가자 2008/09/02 01:48  편집/삭제  댓글 작성  댓글 주소

    수고많으셨어요^^

  3. 검쉰 2008/09/02 13:44  편집/삭제  댓글 작성  댓글 주소

    아하~ 팔찌가 저거였군요 ㅎㅎ
    땡굴이님도 참가 하셨다고 하시던데 ㅎㅎ

    • 머드초보 2008/09/02 14:10  편집/삭제  댓글 주소

      아넵! 노 간지의 결정체입니다.
      보기에도 안이쁘고, 차도 안 이쁜 정말 신기한 팔찌죠^^

  4. keril 2008/09/03 04:06  편집/삭제  댓글 작성  댓글 주소

    애궁... flex 랑 assq 이용해서 mysql 좀 건드려볼려구했는데...
    머드초보님 삽질한 결과를 가지고해도 엄한데서 자꾸 삽질을 하게되네요...

    뭔가 심하게 부족한걸알구 무식하지만 효과적인방법(?)인 정주행을했습니다 ㅋㅋ

    제가 필요한부분만 보다가 쭉 읽어보니 프로그램관련글 만큼이나 닌텐도 겜이나 노래에 관련된 글도 간간히 보이더라구요 ^^

    블로그 재미있게 봤습니다 앞으로도 좋은내용 부탁드려요 ^^

    • 머드초보 2008/09/03 08:31  편집/삭제  댓글 주소

      오...웹툰에서 나오는 용어인 정주행...-_-;
      그 assql은 예제가 그 구글코드사이트를 가면 있어요 ^^
      그거 참고하시면 될 듯 싶네요.
      저도 그걸 응용해서 한번 해봐야겠네요.
      방문해주셔서 감사해요 ^^

« Prev : 1 : 2 : 3 : 4 : 5 : ... 103 : Next »