C로 MySql을 제어해 보자(간단한 성적관리 프로그램)

nunobabo의 이미지

/* http://system.new21.net */

#include <mysql/mysql.h>
#include <string.h>
#include <stdio.h>

#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "1234"
#define DB_NAME "sungjuk"
#define CHOP(x) x[strlen(x) - 1] = ' '
typedef struct{
char name[10];
int jumsu[3];
float ave;
int total;
} _sungjuk;
void input_data(_sungjuk *sungjuk);
int insert(MYSQL *,_sungjuk sungjuk);
int search(MYSQL *);
int print(MYSQL *);
int main(void)
{
int i,n;
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW row;
int field;
int query_stat;
mysql_init(&conn);
connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0);
if(connection == NULL){
printf("connect error!\n");
exit(1);
}
_sungjuk sungjuk[5];
printf("Enter the mode:\n");
printf("1 : input mode\n");
printf("2 : seaching mode\n");
printf("3 : print all\n");
scanf("%d",&n);
switch(n)
{
case 1:
for(i=0;i < 2;i++)
input_data(&sungjuk[i]);

for(i=0;i < 2;i++){
printf("%p\n", connection);
insert(connection,sungjuk[i]);
}
break;
case 2:
search(connection);
break;
case 3:
print(connection);
break;
default :
exit(1);
}
mysql_close(connection);
}

void input_data(_sungjuk *sungjuk)
{
printf("input name\n");
scanf("%s",sungjuk->name);
getchar();
printf("input KOREAN score\n");
scanf("%d",&sungjuk->jumsu[0]);
printf("input ENGLISH score\n");
scanf("%d",&sungjuk->jumsu[1]);
printf("input MATH score\n");
scanf("%d",&sungjuk->jumsu[2]);
sungjuk->total=sungjuk->jumsu[0] +sungjuk->jumsu[1] + sungjuk->jumsu[2];
sungjuk->ave =(float) sungjuk->total/3.0;
}

int insert(MYSQL *con, _sungjuk sungjuk)
{
char buff[255];
sprintf(buff,"insert into test values " "('%s', '%d', '%d', '%d','%d','%f')",sungjuk.name,sungjuk.jumsu[0],sungjuk.jumsu[1],sungjuk.jumsu[2], sungjuk.total, sungjuk.ave);

printf("%s : %p: %d\n",buff, con,mysql_query(con,buff));
}

int search(MYSQL *con)
{
int j;
char buff2[255];
char name[20];

MYSQL_RES *sql_result;
MYSQL_ROW row;
int field;
printf("insert name : ");
scanf("%s",name);
sprintf(buff2,"select * from test where name = '%s'",name);
mysql_query(con,buff2);
sql_result=mysql_store_result(con);
field=mysql_num_fields(sql_result);
printf("%12s%12s%12s%12s%12s%12s","name","KREAN","ENGLISH","MATH","SUM","AVER");
while((row=mysql_fetch_row(sql_result))){
for(j=0;j<field;j++)
printf("%12s",row[j]);
printf("\n");
}
}

int print(MYSQL *con)
{
int k;
MYSQL_RES *sql_result;
MYSQL_ROW row;
int field;
mysql_query(con,"select * from test");
sql_result=mysql_store_result(con);
field=mysql_num_fields(sql_result);
printf("%12s%12s%12s%12s%12s%12s","name","KREAN","ENGLISH","MATH","SUM","AVER");
while((row=mysql_fetch_row(sql_result))){
for(k=0;k<field;k++)
printf("%12s",row[k]);
printf("\n");
}
}


/*by nuno*/

Forums: 
minsu의 이미지

감사합니다만, 요렇게 코드 태그를 써주셨다면 더 보기 좋았을텐데요 :)

/*  http://system.new21.net  */


#include <mysql/mysql.h>
#include <string.h>
#include <stdio.h>


#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "1234"
#define DB_NAME "sungjuk"
#define CHOP(x) x[strlen(x) - 1] = ' '
typedef struct{
                char name[10];
                int jumsu[3];
                float ave;
                int total;
} _sungjuk;
void input_data(_sungjuk *sungjuk);
int insert(MYSQL *,_sungjuk sungjuk);
int search(MYSQL *);
int print(MYSQL *);
int main(void)
{
        int i,n;
    MYSQL       *connection=NULL, conn;
    MYSQL_RES   *sql_result;
    MYSQL_ROW   row;
        int field;
    int       query_stat; 
    mysql_init(&conn);
    connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0);
        if(connection == NULL){
                printf("connect error!\n");
                exit(1);
        }
        _sungjuk sungjuk[5];
        printf("Enter the mode:\n");
        printf("1 : input mode\n");
        printf("2 : seaching mode\n");
        printf("3 : print all\n");
        scanf("%d",&n);
        switch(n)
        {
                case 1:
                        for(i=0;i < 2;i++)
                                input_data(&sungjuk[i]);
        
                        for(i=0;i < 2;i++){
                                printf("%p\n", connection);
                                insert(connection,sungjuk[i]);
                        }
                        break;
                case 2:
                        search(connection);
                        break;
                case 3:
                        print(connection);
                        break;
                default :
                        exit(1);
        }
        mysql_close(connection);
}




void input_data(_sungjuk *sungjuk)
{
                printf("input name\n");
                scanf("%s",sungjuk->name);
                getchar();
                printf("input KOREAN score\n");
                scanf("%d",&sungjuk->jumsu[0]);
                printf("input ENGLISH score\n");
                scanf("%d",&sungjuk->jumsu[1]);
                printf("input MATH score\n");
                scanf("%d",&sungjuk->jumsu[2]);
                sungjuk->total=sungjuk->jumsu[0] +sungjuk->jumsu[1] + sungjuk->jumsu[2];
                sungjuk->ave =(float) sungjuk->total/3.0;
}


int insert(MYSQL *con, _sungjuk sungjuk)
{       
                char buff[255];
                sprintf(buff,"insert into test values " "('%s', '%d', '%d', '%d','%d','%f')",sungjuk.name,sungjuk.jumsu[0],sungjuk.jumsu[1],sungjuk.jumsu[2], sungjuk.total, sungjuk.ave);
                        
                printf("%s : %p: %d\n",buff, con,mysql_query(con,buff));
}


int search(MYSQL *con)
{
        int j;
        char buff2[255];
        char name[20];

    MYSQL_RES   *sql_result;
    MYSQL_ROW   row;
        int field;
        printf("insert name : ");
        scanf("%s",name);
        sprintf(buff2,"select * from test where name = '%s'",name);
        mysql_query(con,buff2);
        sql_result=mysql_store_result(con);
        field=mysql_num_fields(sql_result);
        printf("%12s%12s%12s%12s%12s%12s","name","KREAN","ENGLISH","MATH","SUM","AVER");
        while((row=mysql_fetch_row(sql_result))){
                for(j=0;j<field;j++)
                        printf("%12s",row[j]);
                        printf("\n");
        }
}


int print(MYSQL *con)
{
        int k;
        MYSQL_RES *sql_result;
        MYSQL_ROW row;
        int field;
        mysql_query(con,"select * from test");
        sql_result=mysql_store_result(con);
        field=mysql_num_fields(sql_result);
        printf("%12s%12s%12s%12s%12s%12s","name","KREAN","ENGLISH","MATH","SUM","AVER");
        while((row=mysql_fetch_row(sql_result))){
                for(k=0;k<field;k++)
                        printf("%12s",row[k]);
                        printf("\n");
        }
}
                
        
/*by nuno*/

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.