[SQL] Identity 관련 함수

DBCC CHECKIDENT ('테이블명', RESEED, 값);

==> ex> DBCC CHECKIDENT ('UserData', RESEED, 0);
        ==> UserData에서 사용중이던 자동증가값(Identity)를 0으로 바꿔서 다시 셋팅하라.


IDENT_CURRENT('테이블명')
                                - 요청하는 테이블의 현재 Identity값
==> ex> SELECT @ID = IDENT_CURRENT('UserData')
        ==> UserData에서 사용중인 자동증가값(Identity)를 @ID 에 저장.


@@IDENTITY
                    - 이 구문을 호출하기전에 Insert한 데이터의 Identity 값. Insert 하지 않았다면 NULL
==> ex> SET @ID = @@IDENTITY
        ==> 방금 Insert한 데이터가 가지는 Identity 값을 가져와라.

by 시즈모드 | 2007/11/08 20:13 | :: Study SQL | 트랙백

 

[VC++] 문자열 제어함수 (펌)

문자열 제어 함수

--------------------------------------------------------------------------------

대부분의 문자열 제어 함수는 "string.h" 헤더 파일에 그 내용이 정의되어 있다. 따라서 문자열을 제어하려면 <string .h> 헤더 파일 필요.

#include "iostream.h"
#include "string.h"


1. int strlen(문자열)

문자열의 길이를 반환한다.

int len=strlen("abc");
cout << "len=" << len << endl; // len=3

 

2. char* strcat(문자열1, 문자열2)

문자열1에 문자열2를 연결한다. 문자열1의 최소 길이는 (문자열1의길이 + 문자열2의 길이 + 1) 이상을 가지고 있어야 하며 만약 그렇지 못하다면 메모리의 내용이 파손된다.

// 문자열 연결
char str1[20]="abc";
char str2[]="def";
strcat(str1, str2);
cout << str1 << endl;

 

3. char* strcpy(문자열1, 문자열2)

문자열1에 문자열2을 복사한다.

// 문자열 복사
char str3[20];
char str4[]="park";
strcpy(str3, str4);
cout << str3 << endl;

// 문자열 데이터 초기화는 가능하나, 대입문장으로 문자열을 대입할 수 없고 strcpy 함수 사용한다.
// name[20]="박원기" : O
// irum = name : X


4. int strcmp(문자열1, 문자열2)

두 개의 문자열을 비교한다.
// if(irum=="박원기") : X

문자열1 > 문자열2 이면 양수,
문자열1 == 문자열2 이면 0,
문자열1 < 문자열 2 이면 음수를 얻는다.
대소문자를 비교하지 않고 문자열을 비교하려면 stricmp(문자열1, 문자열2)함수를 사용한다.
정해진 갯수만큼만 비교하려면 strncmp(문자열1, 문자열2, 개수)를 사용한다.

char str1[]="park";
char str2[]=" wyan gi";
if(strcmp(str1,str2)==0) cout << "yes, Equal \n";
else                            cout << "no, Different \n";

 

5. char* strstr(문자열1, 문자열2)

문자열1에서 문자열2의 문자열이 가장 처음 나타나는 위치를 찾아 포인터를 해당 위치로 이동시키고, 만약 찾지 못했을 경우 null 포인트를 기억시킨다.

char str3[]="korea";
char str4[]="ea";
char *pstr;
pstr=strstr(str3, str4);
cout << pstr << endl; // 결과 -> ea

 

6. char* strchr(문자열, 문자)

문자열에서 문자가 가장 처음 나타나는 위치를 찾아 포인터를 해당 위치로 이동시키고, 만약 찾지 못했을 경우 null 포인트를 기억시킨다.

문자열을 뒤에서부터 찾으려면 strrchr()함수를 사용한다.
char str5[]="korea";
char str6='o';
char *pchr;
pchr=strchr(str5, str6);
cout << pchr << endl; // 결과 -> orea

// 이메일주소 정규화
// strstr(문자열1, 문자열2)
// char* strchr(문자열, 문자)

 

7. char* strlwr(문자열)

문자열을 소문자로 바꾼다.

char str1[]="ABC";
char *str2=strlwr(str1);
cout << str2 << endl; // 결과 -> abc


8. char* strupr(문자열)

문자열을 대문자로 바꾼다.

char str1[]="abc";
char *str2=strupr(str1);
cout << str2 << endl; // 결과 -> ABC

 

9. char* strncpy(문자열1, 문자열2, 개수)

문자열2에서 지정한 개수만큼 문자열을 복사하여 문자열1에 복사한다.

문자열2의 길이 > 개수 이면 문자열1은 널 문자로 끝나지 않기 때문에 널문자를 별도로 삽입해 주어야 한다. (문자열 끝이 널이 아니면 문자열을 처리하는데 비정상적으로 처리될 수 있다)
문자열의 길이 < 개수 이면 널문자가 끝에 자동으로 추가된다.
char str1[10];
char *str2="abcde";
 
strncpy(str1, str2, 2);
str1[2]='\0'; // 이 부분을 주석처리하면 어떻게 나올까요 ?
 
cout << str1 << endl;

 

10. char* strncat(문자열1, 문자열2, 개수)

문자열2에서 개수만큼을 복사하여 문자열1뒤에 붙인다.

char str3[40]="abc";
char str4[]="edfgh";
 
strncat(str3, str4,3);
cout << str3 << endl;

 

11. char* strset(문자열1, 문자1)

문자열1에 있는 문자를 모두 문자1로 치환한다.

char str5[]="abcdef";
char str = 'g';
strset(str5, str);
cout << str5 << endl;

 

12. char* strnset(문자열1, 문자1, 개수)

문자열1의 문자를 앞에서 개수만큼을 문자1로 치환한다.

char str7[]="abcdef";
char str8='g';
strnset(str7,str8,3);
cout << str7 << endl;

 

13. char* strrev(문자열1)

문자열1의 순서를 역순으로 한다.(널문자 제외)

char str9[]="abcdef";
char *str10=strrev(str9);
cout << str10 << endl;

 

14. char* strpbrk(문자열1, 문자열2)

문자열1에서 문자열2에 있는 문자중 하나라도 찾게된 문자의 위치를 나타낸다.

char str11[]="abcde";
char str12[]="ce";
char *str13=NULL;
str13=strpbrk(str11,str12);
cout << str13 << endl; // 결과 : cde

 

15. char* strtok(문자열1, 문자열2)

문자열1을 문자열2에 포함된 문자들로 분리한다(토큰). 이때 맨 처음 분리된 토큰은 반환되고, 나머지는 strtok함수 내부에 저장된다. 2회째 부터는 문자열1에 NULL을 지정하여 strtok함수를 호출하여 사용한다.

char str14[]="abc,def,ghi.jkl";
char str15[]=".,";
char *str16=NULL;
 
str16 = strtok(str14,str15);
cout << str16 << endl;
while(str16 !=NULL)
{
    cout << str16 << endl;
    str16=strtok(NULL,str15);
}

펌) http://blog.naver.com/ichmoon1

by 시즈모드 | 2007/10/02 21:38 | :: Study C / C++

 

[MFC] 프로세스 검색 및 강제 종료 => 변형(검색및 카운팅~)

bool CDanceFeverApp::ProcessFind( CString strProcessName, int nFindCount )
{
    HANDLE   hProcessSnap = NULL; 
    BOOL   bRet   = FALSE; 
    PROCESSENTRY32 pe32   = {0};
    int    nCount   = 0;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    
    if (hProcessSnap == (HANDLE)-1) 
        return false;


    pe32.dwSize = sizeof(PROCESSENTRY32);

    //프로세스가 메모리상에 있으면 첫번째 프로세스를 얻는다
    if (Process32First(hProcessSnap, &pe32)) 
    { 
        BOOL          bCurrent = FALSE; 
        MODULEENTRY32 me32       = {0}; 
        do 
        { 
            bCurrent = GetProcessModule(pe32.th32ProcessID,strProcessName);
            if(bCurrent)
            { 
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
                if(hProcess)
                {
                     nCount++;
                /*  if(TerminateProcess(hProcess, 0))
                     {
                         unsigned long nCode; //프로세스 종료 상태 
                         GetExitCodeProcess(hProcess, &nCode);
                     }
               */   printf("process exit\n");
                     CloseHandle(hProcess);
                }
            }
        } 
        while (Process32Next(hProcessSnap, &pe32)); //다음 프로세스의 정보를 구하여 있으면 루프를 돈다.
    }

 if( nCount >= nFindCount )
 {
  CloseHandle (hProcessSnap);
  return true;
 }
 else
 {
  CloseHandle (hProcessSnap);
  return false;
 }
}

 

bool CDanceFeverApp::GetProcessModule(DWORD dwPID,CString sProcessName)
{
 int    nCount = 0;
 HANDLE   hModuleSnap = NULL;
 MODULEENTRY32 me32  = {0};
 hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);

 if (hModuleSnap == (HANDLE)-1)
 {
  return (FALSE);
 }

 me32.dwSize = sizeof(MODULEENTRY32);

 //해당 프로세스의 모듈리스트를 루프로 돌려서 프로세스이름과 동일하면
 //true를 리턴한다.

 if(Module32First(hModuleSnap, &me32))
 {
  do
  {
   printf("process name : %s\n", me32.szModule);

   if(me32.szModule == sProcessName)
   {
    CloseHandle (hModuleSnap);
    return true;
   }

  }
  while(Module32Next(hModuleSnap, &me32));
 }

 CloseHandle (hModuleSnap);
 return false;
}

bool CDanceFeverApp::FindOverlapProcess()
{
 bool bFind = false;

 if( bFind = ProcessFind( _T("DanceFeverC.exe")) )
  return true;
 if( bFind = ProcessFind( _T("DanceFeverC_d.exe")) )
  return true;
 if( bFind = ProcessFind( _T("Patch.exe")) )
  return true;
 if( bFind = ProcessFind( _T("Patch_d.exe")) )
  return true;
 if( bFind = ProcessFind( _T("DanceFever.exe"), 2 ) )
  return true;
 if( bFind = ProcessFind( _T("DanceFever_d.exe"), 2 ) )
  return true;


 return false;
}

by 시즈모드 | 2007/10/01 20:58 | :: Study MFC

 

[MFC] 프로세스 검색 및 강제 종료

#include "Tlhelp32.h"

bool ProcessKill(CString strProcessName)
{
    HANDLE         hProcessSnap = NULL; 
    BOOL           bRet      = FALSE; 
    PROCESSENTRY32 pe32      = {0}; 

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

    if (hProcessSnap == (HANDLE)-1) 
        return false;

    pe32.dwSize = sizeof(PROCESSENTRY32); 

    //프로세스가 메모리상에 있으면 첫번째 프로세스를 얻는다
    if (Process32First(hProcessSnap, &pe32)) 
    { 
        BOOL          bCurrent = FALSE; 
        MODULEENTRY32 me32       = {0}; 

        do 
        { 
            bCurrent = GetProcessModule(pe32.th32ProcessID,strProcessName);
            if(bCurrent) 
            { 
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
                if(hProcess)
                {
                    if(TerminateProcess(hProcess, 0))
                    {
                        unsigned long nCode; //프로세스 종료 상태 
                        GetExitCodeProcess(hProcess, &nCode);
                    }
                    printf("process exit\n");
                    CloseHandle(hProcess);
                    return true;
                }
            } 
        } 
        while (Process32Next(hProcessSnap, &pe32)); //다음 프로세스의 정보를 구하여 있으면 루프를 돈다.
    }
    CloseHandle (hProcessSnap); 
    return true;
}



bool GetProcessModule(DWORD dwPID,CString sProcessName)

    HANDLE        hModuleSnap = NULL; 
    MODULEENTRY32 me32        = {0}; 
    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); 

    if (hModuleSnap == (HANDLE)-1) 
        return (FALSE); 

    me32.dwSize = sizeof(MODULEENTRY32);

//해당 프로세스의 모듈리스트를 루프로 돌려서 프로세스이름과 동일하면
//true를 리턴한다.

    if(Module32First(hModuleSnap, &me32)) 
    { 
        do 
        { 
            printf("process name : %s\n", me32.szModule);

            if(me32.szModule == sProcessName)
            { 
                CloseHandle (hModuleSnap); 
                return true;
            } 

        } 
        while(Module32Next(hModuleSnap, &me32)); 
    } 

    CloseHandle (hModuleSnap); 
    return false;
}



사용예)

ProcessKill(_T("iexplore.exe"));

by 시즈모드 | 2007/10/01 20:45 | :: Study MFC

 

◀ 이전 페이지다음 페이지 ▶