Posted
Filed under C,C++
[원문] : http://zetcode.com/tutorials/mysqlcapitutorial/

문서를 보면 알겠지만  php 에서 사용 하는 방법과 메우 유사 합니다.
php할 수 있다면 , C에서도 문제 없이 컨트롤 하여 사용 할 수 있을 것으로 보입니다.


보다 자세한 내용은 위의 원문을 통해서 확인 하면 됩니다.

#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{

  MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields;
  int i;

  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "zetcode", "passwd", "testdb", 0, NULL, 0);

  mysql_query(conn, "SELECT * FROM writers");
  result = mysql_store_result(conn);

  num_fields = mysql_num_fields(result);

  while ((row = mysql_fetch_row(result)))
  {
      for(i = 0; i < num_fields; i++)
      {
          printf("%s ", row[i] ? row[i] : "NULL");
      }
      printf("\n");
  }

  mysql_free_result(result);
  mysql_close(conn);

}




2013/02/15 16:59 2013/02/15 16:59
Posted
Filed under C,C++

리눅스에서 gcc 컴파일러를 통해서 c를 컴파일할 수 있습니다.
이것을 통해서 데몬도 만들고 서버 작업 해야 될것도 있어
특히 이번에는 MYSQL과 연동하여 작업 할 것이 있어 C로 제작을 하기 위해서
시작 단계인 mysql과 + c를 연동 하기 위해서
이것저것 자료를 모아 정리 해 본다.
우선 아래 소스는 기본 소스입니다.

#include <stdio.h>
#include <mysql.h>
#include <errno.h>

int main( int argc, char *argv[], char**env )
{
 MYSQL mysql ;
 mysql_init(&mysql) ;

 if(!mysql_real_connect(&mysql, NULL, "instart","[instart]", "instart" ,3306, (char *)NULL, 0))
 {
  printf("%s\n",mysql_error(&mysql));

 }else{
  printf("성공적으로 연결되었습니다.\n") ;
 }

 mysql_close(&mysql) ;
}

컴파일
gcc mysqltest.c -o mysqltest -rdynamic -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -I/usr/local/mysql/include/mysql  -g -DUNIV_LINUX -DUNIV_LINUX

컴파일 옵션 값은
./mysql_config --libs --cflags
위 명령어를 통해서 구할 수 있습니다.
mysql 설치 디렉토리 확인 해보시면 mysql_config 파일이 있습니다.

마지막으로 mysql객체를 생성하면 세그멘테이션 오류  또는 segmentation fault
오류가 발생 합니다.
이경우에는
/etc/ld.so.conf  vi로 열어

/usr/local/mysql/lib/mysql
위와 같이 mysql lib 경로를 설정 해줬습니다.
시스템 상황에 맞춰서 경로를 넣어 주시고

/etc/ldconfig 를 싱행 해줍니다.

그리고 나서 다시 컴파일을 합니다.

이상으로 linux 에서 c언어로 mysql을 연동하기 위해서 해야 될것들에 대해서
정리를 해봤습니다.
<참고로 전 sulinux2.0 을 사용 하고 있습니다>

2013/02/15 16:09 2013/02/15 16:09
Posted
Filed under C,C++

메뉴의 Project->Options 항목에서
1. C++ Linker의 Dynamic RTL 속성을 false로 선택
2. Packages의 Runtime Packages의 체크를 풀어줌

하시고 Build하시면 다른 컴에서 실행 가능할 듯 합니다.
2010/04/30 17:42 2010/04/30 17:42
Posted
Filed under C,C++
dialog 에 PreTranslateMessage 를 구현 한다.

BOOL CFileViewDlg::PreTranslateMessage(MSG* pMsg)
{
      // TODO: Add your specialized code here and/or call the base class
     
      if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) return FALSE;   //return TRUE;
      return CDialog::PreTranslateMessage(pMsg);
}
2010/04/30 14:52 2010/04/30 14:52
Posted
Filed under C,C++

[원문] : http://support.microsoft.com/kb/117320/ko

MFC 버전 2.5 이상을 사용하는 경우 수 활용하는 새 전역 MFC 함수, "AfxGetMainWnd", 코드를 단순화하기 위해:

   void ExitMFCApp()
   {
        // same as double-clicking on main window close box
        ASSERT(AfxGetMainWnd() != NULL);
        AfxGetMainWnd()->SendMessage(WM_CLOSE);
   }
				

참고 : 항상 문서의 데이터를 변경한 후 CDocument::SetModifiedFlag() 호출. 이 프레임워크는 종료 전에 저장할 것인지 묻는 것을 보장합니다. 종료 절차를 보다 광범위한 제어해야 CDocument::SaveModified()를 재정의할 수 있습니다.


2010/04/29 20:00 2010/04/29 20:00
Posted
Filed under C,C++

mrfc에서 제공 해주는 인터넷 익스플로어를 사용 하여
웹페이지를 네비게이트 했을 때
javascript의 window.close() ; 이벤트에 의해서 창이 닫이고 배경이 보이는 현상이 발생 한다.
그래서 OnWindowClosing  핸들러를 등록 하고 ..
다음과 같이
 *Cancel=TRUE; 처리 한다.

void CViewDlg::OnWindowClosingExplorer1(BOOL IsChildWindow, BOOL FAR* Cancel)
{
 // TODO: Add your control notification handler code here
 *Cancel=TRUE;
 char currentPath[_MAX_PATH];
    _getcwd(currentPath, _MAX_PATH);

 char path[200];
 sprintf(path,"%s\\main\\index.html",currentPath);
    printf("%s",path);
 m_browser.Navigate(path, NULL, NULL, NULL, NULL);

}

2010/02/24 18:47 2010/02/24 18:47
Posted
Filed under C,C++

시리얼통신] 128에서 UART0 <-> UART1 통신

|

128 시리얼 통신 포트(UART0, UART1) 2 있는데, 두개간 통신해야 할일이 있다.

예를 들어 센서나 특정 GPS 모듈이 시리얼 포트를 지원한다고할때, 얘를 UART0(혹은 UART1)으로 물리고, 값을 컴퓨터 출력하기 위해

UART1(혹은 UART0)으로 물릴 경우 말이다.

보통 센서는 I2C 쓰는 경우가 많지, Serial 포트를 쓰는 경우가 별로 없다. 하지만, 운나쁘게 Serial 포트를 쓰는 경우는 위의 방법 말고

다른 방법이 있나? 내는 모르겠다.

 

어쨌거나, UART0으로 들어와서 UART1으로 출력하는 개념도나 예제를 살펴보자.

 

 

<당근이가 실험해본 UART0 <-> UART1 실험 환경>

 

 

PC TXD, RXD 통신하면 UART 전송되어 오므로, 이를 MAX232 레벨을 바꿔주고, ATmega128 UART0으로 받아들인다음에,

내부 프로그램을 통해서 다시 UART1으로 Echo 해보자. (에코 안하고, 다르게 만드려면, 여러가지 text 앞뒤로 붙여주거나, 데이터를 가공하면 되겠다.)

 

#include <avr/io.h>
#include <avr/interrupt.h>
//
나머지 헤더 파일 생략..

 

#include "./lib/delay.h"
#include "./lib/fundamental.h"
#include "./lib/uart.h"

// uart.h에는 tx1_char(rx0_data)  uart0_init(BAUD_9600) 함수가 들어가 있다

// 함수에 대한 내용은 생략한다. 궁금하신 분은 당근이 라이르러리를 확인해 보시길..

volatile unsigned char rx0_data= '0';
volatile unsigned char rx1_data= '0';

 

//소스 코드는 어이가 없을정도로 간단하다.

SIGNAL(SIG_UART0_RECV) {

  // UART0 RECV 인터럽트가 <SPAN style="FONT-SIZE: 9pt; COLOR: #3a32c3; FONT-FAMILY: 굴림; mso-

2009/07/17 20:39 2009/07/17 20:39