[완료] MySQL C API 중 데이터 가져오는 방법

segenny의 이미지

^^; 매일 하루도 안빼놓고 질문만 올리네요.. 답변도 감사합니다.

MySQL C API중 다음과 같은 코드가 있습니다.

  if (!mysql_real_connect(mysql,       /* MYSQL structure to use */ 
43                                                         "localhost", /* server hostname or IP address */  
44                                                         "root",      /* mysql user */ 
45                                                         "",          /* password */ 
46                                                         "World",      /* default database to use, NULL for none */ 
47                                                         0,           /* port number, 0 for default */ 
48                                                         NULL,        /* socket file or named pipe name */ 
49                                                         CLIENT_FOUND_ROWS /* connection flags */ )) { 
50                 puts("Connect failed\n"); 
51         } else {                 
52                 if (mysql_query(mysql, "SELECT * FROM City LIMIT 10")) { 
53                         printf("Query failed: %s\n", mysql_error(mysql)); 
54                 } else { 
55                         MYSQL_RES *result = mysql_store_result(mysql); 
56  
57                         if (!result) { 
58                                 printf("Couldn't get results set: %s\n", mysql_error(mysql)); 
59                         } else { 
60                                 MYSQL_ROW row; 
61                                 int i; 
62                                 unsigned int num_fields = mysql_num_fields(result); 
63                                                                  
64                                 while ((row = mysql_fetch_row(result))) { 
65                                         for (i = 0; i < num_fields; i++) { 
66                                                 printf("%s, ", row[i]); 
67                                         } 
68                                         putchar('\n'); 
69                                 } 
70  
71                                 mysql_free_result(result); 
72                         } 
73                 } 
74         } 
75          
76         mysql_close(mysql); 
77  
78         return EXIT_SUCCESS; 

위 샘플 소스에는 row[i] 값을 배열로 가져오는데 만약에 가져오는 값이 데이터베이스의 int형이라면
바로 int 형으로 가져올 방법이 없나요? 모든 데이터를 저렇게 가져와서 형변환을 시켜야 하는건가요??

atoi 관련해서 또올리네요.. ㅠㅠ;

superkkt의 이미지

방법이 없는걸로 알고 있습니다. 예를들어 API 입장에서 봤을때 DB 테이블에 필드가 4개가 있는데, varchar, int, int, varchar 순서인지 int, int, int, varchar 순서로 있는지 모르는 상태에서 row에 대한 타입을 제공해야 하니 모든걸 문자열로 처리하는 방법뿐이겠죠.

======================
BLOG : http://superkkt.com

======================
BLOG : http://superkkt.com

segenny의 이미지

문자열을 atoi로 변환해서 사용해야 하는건가요??

매일(거의) 블로그에서 좋은정보를 많이 얻었는데 이렇게 답변을 주시니.
고맙습니다.

그 숫가락으로.. 식사도 하시나요?ㅋㅋ

안된다고 하지말고 아니라고 하지말고 어떻게~!

된다!고요~~

bootmeta의 이미지

숟가락이었군요.
-_-;

wariua의 이미지

완료된 질문이긴 합니다만... 가능합니다.

prepared statement 방식을 사용하면 됩니다. 이 페이지에서는 예제도 있다는 소문이...

보면 느끼시겠지만 코딩하기가 상당히 번거로울 수 있습니다.
----
$PWD `date`

$PWD `date`

superkkt의 이미지

아..이런 방법이 있었군요. 메뉴얼 볼때도 statement 쪽은 뭔지 궁금하면서도 한번도 읽어본적이 없는데. 이런거였군요. 그런데 코드가 대략 난감이군요. 저는 그냥 타입 변환해서 쓰는 쪽에 한표~

======================
BLOG : http://superkkt.com

======================
BLOG : http://superkkt.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.