2010년 1월 20일 수요일

MySql C API Table 과 Record : 추가 삭제 데이터 입력 레코드 찾기

#define SQL_CREATE                                 "CREATE"

#define SQL_DROP                                    "DROP"



#define SQL_TABLE                                   "TABLE"

#define SQL_DATABASE                            "DATABASE"



////#define SQL_INSERT_RECORD "INSERT INTO playerinfo VALUES(NULL , %s, %d);" //"



#define SQL_INSERT                               "INSERT"

#define SQL_INTO                                   "INTO"

#define SQL_VALUES                              "VALUES"



//#define SQL_SELECT_RECORD "SELECT * FROM playerinfo"

#define SQL_SELECT                              "SELECT"

#define  SQL_FROM                                "FROM"

#define SQL_WHERE                              "WHERE"



//---------Table----------------------------------

//------------------------------------------------

//테이블리스트를가져온다

BOOL CMySQLDB::GetTableList(MYSQL_RES*  &Refresul)

{

             MYSQL_RES*  result =NULL;



             result= mysql_list_tables(m_DBInfo.m_MySQL_CONNECT,"%");

             Refresul=result;

             if(result)

             {

                           while(result->data->data!=NULL){

                                        printf("있다%s\n",*(result->data->data->data));

                                        result->data->data =result->data->data->next;

                           }

                           return TRUE;

             }

            

             return FALSE;

}

//테이블생성

BOOL CMySQLDB::CreateTable(const char* TableName,const char* TableStructure)            

{

             if(!TableName || !TableStructure )

                           return FALSE;



             memset(m_CommandString,0, _countof(m_CommandString));

             sprintf_s(m_CommandString,"%s %s %s(%s); ",SQL_CREATE,SQL_TABLE, TableName,TableStructure);

             m_dQuery_stat=mysql_query(m_DBInfo.m_MySQL_CONNECT,m_CommandString);

             if (m_dQuery_stat != 0)

             {

                           cout<<"여기?"<<endl;

                           //fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));

                           return FALSE;

             }

             cout<<m_CommandString<<endl;





             return TRUE;

}





//테이블삭제

BOOL CMySQLDB::DelTable(const char* Tablename)

{

             if(!Tablename)

                           return FALSE;



             memset(m_CommandString,0, _countof(m_CommandString));

             sprintf_s(m_CommandString,"%s %s %s",SQL_DROP,SQL_TABLE, Tablename);

             cout<<m_CommandString<<endl;



             m_dQuery_stat=mysql_query(m_DBInfo.m_MySQL_CONNECT,m_CommandString);

             if (m_dQuery_stat != 0)

             {

                           return FALSE;

             }

             /*

             query_stat=mysql_query(connection,SQL_DROP_TABLE);

             if (query_stat != 0)

             {

             fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));

            

             }

*/



             return TRUE;

}



//---------Record----------------------------------

//------------------------------------------------

//레코드삽입.

BOOL CMySQLDB::INSERTTableValue(const char* TableName,const char *valse , ...  )

{

             if(!TableName || !valse )

                           return FALSE;

            

             //레코드에입력값들을스크림으로만든다.

             char ValueString[512];

             va_list argptr;

             va_start( argptr, valse );

             vsprintf_s(ValueString, valse, argptr );

             va_end( argptr );



             memset(m_CommandString,0, _countof(m_CommandString));

             sprintf_s(m_CommandString,"%s %s %s %s(%s);",SQL_INSERT,SQL_INTO, TableName,SQL_VALUES,ValueString);



             m_dQuery_stat = mysql_query(m_DBInfo.m_MySQL_CONNECT,m_CommandString);





             if (m_dQuery_stat != 0)

             {

                           cout<<"여기"<<endl;

             //          fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));

                           return FALSE;

             }

             printf("%s\n",m_CommandString);



             return TRUE;

}



//레코드선택                                                                          (SELECT valse FROM TableName WHERE condition) ex) "SELECT * FROM playerinfo"

BOOL CMySQLDB::SELECT_FROM_Table(const char* TableName,const char* valse, const char* condition,...)

{

             if(!TableName)

                           return FALSE;



             memset(m_CommandString,0, _countof(m_CommandString));

            

             //정렬할변수형들

             if(valse == NULL)

             {

                           sprintf_s(m_CommandString,"%s %c %s %s",SQL_SELECT,'*',SQL_FROM,TableName);

             }else

             {

                           sprintf_s(m_CommandString,"%s %s %s %s",SQL_SELECT,valse,SQL_FROM,TableName);

             }

             //찾을조건

             if(condition != NULL)

             {

                           char Con[255];

                           va_list argptr;

                           va_start( argptr, condition );

                           vsprintf_s(Con, condition, argptr );

                           va_end( argptr );



                           sprintf_s(m_CommandString,"%s %s",m_CommandString, SQL_WHERE ,Con);

             }

            

             m_dQuery_stat=mysql_query(m_DBInfo.m_MySQL_CONNECT,m_CommandString);

             if (m_dQuery_stat != 0)

             {

                                        return FALSE;

             }



             cout<<m_CommandString<<endl;

             return TRUE;



}



//찾은테이블결과값을가져온다..

//레코드보기..sql_result //bool freeReult변수는DB에서Select해서찾은결과값을지울것인지를결정한다.

BOOL CMySQLDB::ViewTableresult(MYSQL_RES* &RefSql_result, bool freeReult)

{



             MYSQL_RES *sql_result;

             MYSQL_ROW sql_row;

             sql_result=mysql_store_result(m_DBInfo.m_MySQL_CONNECT);

             RefSql_result=sql_result;

            

             if(freeReult){

                           while((sql_row=mysql_fetch_row(sql_result))!=NULL)

                           {

                                        //fiele_count 값이열(col)의(테이블에선언된변수갯수) 이다.  

                                        for(int index =0; index<sql_result->field_count ; index++)

                                        {

                                                     printf("%s ",sql_row[index]);

                                        }

                                        printf("\n");

                           }

                           //mysql_free_result(sql_result);

             }

             return TRUE;

}

댓글 없음:

댓글 쓰기