▩ C언어를 이용한 필수 기초 알고리즘 - 제어 반복문의 활용 1


1. 100~999 사이에 7의 배수의 갯수와 합을 구하는 프로그램을 작성하세요. 답 : 128, 70336
 
#include <stdio.h>
#include <conio.h>

void main(){
    long int i,cnt,sum,nmg;

    cnt=sum=0L;

    for(----- ? -----){
        nmg = ----- ? -----;
        if(nmg)
            continue;
  else {
         printf("현재 발견된 7의 배수: %d\n", i);
            sum += i;
            cnt++;
        }
    }
    printf("\n 7의 배수의 갯수: %5ld\n  합 : %5ld\n",cnt,sum);
    getch();


▷ 7의 배수를 한줄에 15개씩 출력하는 프로그램을 작성하세요.


2. 100~999 사이에 7의 배수가 아닌 수들의 갯수와 합을 구하는 프로그램을 작성하세요.

답 : 772, 424214


3. 최대값 , 최소값을 구하는 프로그램을 제작 하세요.

#include <stdio.h>
#include <conio.h>

void main(){
    int  no,data,max,min,cnt;

    printf("입력할 자료의 갯수는 ? ");
    scanf("%d",&no);
    cnt=1;
   
    printf("데이터를 입력해 주세요.\n------------------------\n");

    scanf("%d",&data);

    ----- ? -----

    do {
        cnt++;
        scanf("%d",&data);
        if( max < data ) max = data;
        if( min > data ) min = data ;
    } while( cnt < no );

    printf("\n   최대값 : %5d\n   최소값 : %5d\n", max, min);
    getch();
}


4. 5개의 정수를 입력 받아 수의 범위를 구하는 프로그램을 작성하시오.

#include <stdio.h>
#include <conio.h>

void main(){
    int  tbl[5], i, max, min, range;

    for(i=0;i<5;i++){
     scanf("%d", &tbl[i]);
    }

    printf("입력받은 데이터 : \n");

    for(i=0;i<5;i++){
        printf("%5d",tbl[i]);
    }

    ----- ? -----
 
    for(i=1;i<5;i++){
        if(max<tbl[i]) max=tbl[i];
        if(min>tbl[i]) min=tbl[i];
    }

    ----- ? -----
   
    printf("\n\n   입력받은 수의 범위 : %5d\n",range);
    getch();
}                                                   


5. 하나의 수를 입력받아 양수, 음수 인지 출력하는 프로그램 작성하세요.


6. 하나의 수를 입력받아 부호를 무조건 양수로 바꾸어 출력하는 프로그램을 작성하세요.


7. 세 과목의 점수(0~100)를 입력받아 평균을 구한 후 평균이 90점 이상이면 "A", 80이상이면 "B", 70 이상이면 "C", 60 이상이면 "D", 그렇지 않으면 "F"를 출력하는 프로그램을 작성하세요.

 #include <stdio.h>
 #include <conio.h>

 void main() {
   int kor, eng, mat, ave;
             
   printf("국어 점수를 입력하세요 : ");
   scanf("%d", &kor);
   printf("영어 점수를 입력하세요 : ");
   scanf("%d", &eng);
   printf("수학 점수를 입력하세요 : ");
   scanf("%d", &mat);
   --------?--------;
   printf("점수의 평균은 %d입니다.\n", ave);

   switch(--?--) {
     case 10 :
     case 9 :
 printf("당신의 평가는 A입니다.");
 break;
     case 8 :
 printf("당신의 평가는 B입니다.");
 break;
     case 7 :
 printf("당신의 평가는 C입니다.");
 break;
     case 6 :
 printf("당신의 평가는 D입니다.");
 break;
     default :
 printf("당신의 평가는 F입니다.");
   }
    getch();
 }



▩ 제어 반복문 활용 2


1. 아래 문제의 ---?--- 칸을 채우세요. 대문자로 변경하는 로직이 들어가야 합니다.

 #include <stdio.h>
 #include <conio.h>

 void main() {
   char c;

   do {
     printf("메뉴 코드를 입력하세요.(F, E, H, X, 기타) : ");
     c=getch();
     putchar(c);
     if(c>=97) c -= --?--;

     switch(c) {
       case 'F' :
           printf("\nFile MENU\n");
       break;
       case 'E' :
       printf("\nEdit MENU\n");
       break;
       case 'H' :
       printf("\nHelp MENU\n");
       break;
       case 'X' :
       printf("\n프로그램을 종료합니다.\n");
       break;

       default :
       printf("\n잘못된 입력입니다.\n");
     }
   } while(c!='X');
   getch();
 }


2. 1부터 3까지 a와 b의 값를 출력하는 데, a, b가 같은 경우는 출력되지 않도록 프로그램을 작성해 보세요.

출력 결과:

a=1 b=2
a=1 b=3
-------
a=2 b=1
a=2 b=3
-------
a=3 b=1
a=3 b=2


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int a, b;

   printf("=========\n");
   for(a=1; a<=3; a++) {
      for(b=1; b<=3; b++) {
 if(a--?--b){
    --?--
           }

 printf("A=%d, B=%d\n", a ,b);
      }
   printf("=========\n");
   }
   getch();  
 }


3. 제어문을 이용하여 아래와 같이 출력되는 프로그램을 제작해 보세요.

 1
 2   3
 4   5   6
 7   8   9  10
11  12  13  14  15


4. 제어문을 이용하여 아래와 같이 출력되는 프로그램을 제작해 보세요.

 3
 6   9
12  15  18
21  24  27  30
33  36  39  42  45


5. 제어문을 이용하여 아래와 같이 출력되는 프로그램을 제작해 보세요.

                     1
                2   3
            4   5   6
       7   8   9  10
11  12  13  14  15


#include <stdio.h>
#include <conio.h>

main(){
 int i, j, cnt;
           cnt=0;
 for(----- ? -----){
  for(j=1; j<=5; j++){

   if(i>j){
    printf("     ");
   }else{
                                  cnt=cnt+1;
    printf("%5d", cnt);
                                }
  }
           printf("\n");
 }
    getch();
}


6. 제어문을 이용하여 아래와 같이 출력되는 프로그램을 제작해 보세요.

                 15
            14  13
       12  11  10
     9   8   7   6
5   4   3   2   1



▩ 제어 반복문의 활용 3


▶ 구구단 출력하기

1. 2단만 출력

#include <stdio.h>
#include <conio.h>

void main(){
 int i;

 for(i=1; i<=9; i++){
      printf("2*%d=%d\n", ----- ? -----);
    }
    getch();
}


2. 3단식 출력하기

#include <stdio.h>
#include <conio.h>

void main(){
 int k, i, p;

    for(----- ? -----){
  for(i=1; i<=9; i=i+1){
   printf("\t%d*%d=%d", k, i, k*i);
    printf("\t%d*%d=%d", k+1, i, (k+1)*i);
   printf("\t%d*%d=%d\n", k+2, i, ----- ? -----);
  }
  printf("\n---------------------------------------------------------\n");
                     p=getchar();

 }
    getch();
}


3. 배열을 이용하여 구구단 출력하기

#include <stdio.h>
#include <conio.h>

void main(){
 int k, i, ----- ? -----, p;


 for(k=0; k<=8; k=k+3){
  for(i=0; i<=8; i=i+1){
   a[k][i] = (k+1)*(i+1);
   a[k+1][i] = (k+2)*(i+1);
   a[k+2][i] = ----- ? -----;
  }
 }

    for(----- ? -----){
  for(i=0; i<=8; i=i+1){
   printf("\t%d*%d=%d", k+1, i+1, a[k][i]);
    printf("\t%d*%d=%d", k+2, i+1, a[k+1][i]);
   printf("\t%d*%d=%d\n", k+3, i+1, a[k+2][i]);
  }
  printf("\n---------------------------------------------------------\n");
        p=getchar();
 }
    getch();
}


▷ 1부터 100까지 짝수의 합 구하기 (답 : 2550)


▷ 1부터 100까지 홀수의 합 구하기 (답 : 2500)


4. 아래와 같이 출력되도록 프로그램을 작성하세요.

♡♡♡♡♡
♡♡♡♡
♡♡♡
♡♡


5. 아래와 같이 출력되도록 프로그램을 작성하세요.
   - ♡ 하나는 공백문자 2개에 해당합니다.

            ♡
         ♡♡
      ♡♡♡
   ♡♡♡♡
♡♡♡♡♡

Posted by 나비:D
:

▩ 제어문 - 반복문 while 문


   - 반복 횟수가 지정되어 있지않은 경우
   - 조건식이 참이면 계속 실행한다.


   - 무한 루틴: 무한 루틴인 경우는 대부분 if문과 break문을 동반하는 경우가 많다.
     while(1){
         문장 실행;
     }



>>>>> 1부터 10까지 합을 구하는 while문


 #include <stdio.h>

 void main() {
   int i=1, sum=0;

   while(i<=10) {
     printf("현재 수는 %d입니다.\n", i);
     sum += i;
     i++;
   }
   printf("총합은 %d입니다.\n", sum);
 }




▩ 제어문 - 반복문 do~while 문


   - do-while 문 : 최소한 1회 이상 실행될 필요가 있는 경우



 >>>>> 1부터 10까지 합을 구하는 do~while문


  #include <stdio.h>

 void main() {
   int i=1, sum=0;

   do {
     printf("현재 수는 %d입니다.\n",  i);
     sum += i;
     i++;
   } while(i<=10);
   printf("총합은 %d입니다.\n", sum);
 }




▩ break문을 이용한 루프의 중단


   - 반드시 if문을 동반
   - 반복문 탈출
   - 특정 값에서 반복 처리를 멈추어야 할 경우



>>>>> break문의 이용


 #include <stdio.h>
 #include <conio.h>

 void main() {
   int a, b;

   printf("=========\n");
   for(a=1; a<=5; a++) {
      for(b=1; b<=10; b++) {
      printf("A=%d, B=%d\n", a, b);
      if(a==b) break;
      }
      printf("=========\n");
   }
   getch();
 }




▩ continue문을 통한 반복문 흐름의 제어


   - 루프를 탈출하지 않으면서 특정 조건에만 반복루틴을 처리하지 않음
  


>>>>> continue 문의 이용


 #include <stdio.h>

 void main() {
   int a, b;

   printf("=========\n");
   for(a=1; a<=4; a++) {
      for(b=1; b<=4; b++) {
 if(a==b)
    continue;
 printf("A=%d, B=%d\n", a ,b);
      }
   printf("=========\n");
   }  
 }

Posted by 나비:D
:

▩ 제어문 - 반복문 for 문


   - 반복 횟수가 지정되어 있는 경우
   - for문은 내부에 초기화 코드를 가지고 있다.
   - 조건식이 참이면 계속 실행한다.

   for(초기화;  조건식;  재초기화){
     ⓐ -------> ⓑ <-------- ⓓ
                 │           ↗
                 │         /
                 │       /
                 │     /
              printf("★");
                 │ /
                 ↓/
                  ⓒ
             실행 문장;
   }


1. 최초 처리순서
   ⓐ --> ⓑ --> ⓒ --> ⓓ --> ⓔ --> ⓑ --> ⓒ


2. 반복 처리순서
   ⓑ --> ⓒ --> ⓓ --> ⓔ --> ⓑ --> ⓒ



>>>>> 1부터 10까지 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int k;

   for(k=1 ; k<=10 ; k++)
      printf("%d을(를) 출력합니다.\n", k);
 }



>>>>> 100부터 1까지 짝수만 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int i;

   for(i=100; i>0; i=i-2)
      printf("%d을(를) 출력합니다.\n", i);
 }



>>>>> 1부터 10까지의 합계를 구하는 프로그램


 #include <stdio.h>

 void main() {
   int i, sum=0;

   for(i=1; i<=10; i++) {
      printf("%d\n", i);
      sum += i;
   }
   printf("합계는 %d입니다.\n", sum);
 }



>>>>> 1부터 100까지 중에서 3의 배수의 개수와 합계를 구하는 프로그램
 

#include <stdio.h>

 void main() {
   int i, cnt=0;
   long sum=0;

   for(i=1; i<=100; i += 3) {
      printf("%d\n", i);
      sum += i;
      cnt++;
   }
   printf("합계는 %ld입니다.\n", sum);
   printf("개수는 %d개입니다.\n", cnt);
 }


▷ 위의 프로그램을 for문은 for(i=0; i<=100; i++)로 변경하고 if문을 사용하여 같은 결과가 나오도록 수정하세요.



>>>>>> 구구단을 출력하는 중첩된 for 문


 #include <stdio.h>

 void main() {
   int k, j, cnt=0;
   long sum=0;

   for(k=1 ; k<=9 ; k++) {
      for(j=1; j<=9; j++) {
 if(j!=9)
    printf("%d*%d=%2d, ", k, j, k*j);
        else
    printf("%d*%d=%2d", k, j, k*j);
      }
   printf("\n");
   }
 }


▷ 구구단의 반복 횟수 및 합을 출력하는 프로그램으로 수정하세요.


>>>>> 출력하려는 구구단을 입력받는 프로그램


 #include <stdio.h>

 void main() {
   int s, e, i, j;

   printf("구구단의 시작수를 입력하세요 : ");
   scanf("%d", &s);
   printf("구구단의 끝수를 입력하세요 : ");
   scanf("%d", &e);
   for(i=s; i<=e; i++) {
      for(j=1; j<=9; j++) {
       if(j!=9)
   printf("%d*%d=%2d, ", i, j, i*j);
       else
          printf("%d*%d=%2d", i, j, i*j);
      }
   printf("\n");
   }
 }

Posted by 나비:D
:

▩ 연산자


1. 정수 연산자 원리
   정수/정수 = 정수
   정수/실수 = 실수
   실수/정수 = 실수
   실수/실수 = 실수

   - 작은 데이터 타입과 큰 데이터 타입의 경우 항상 작은 데이터 타입은 큰 데이터 타입으로 흡수

      된다.



>>>>> 기본 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=3;

   printf("%d + %d = %d\n", a, b, a+b);
   printf("%d - %d = %d\n", a, b, a-b);
   printf("%d * %d = %d\n", a, b, a*b);
   printf("%d / %d = %d\n", a, b, a/b);

   //특수문자의 출력은 2번 연속해서 입력합니다.
   printf("%d %% %d = %d\n", a, b, a%b); 
 }




2. 증가/감소 연산자
   - 일반 2항연산자보다 처리속도가 빠릅니다.

   - ++a, a++의 개념
     a = a + 1;


   - --a, a--의 개념
     a = a - 1;


   - a = ++b;
     b = b + 1;
     a = b;


   - a = b--;
     a = b;    
     b = b - 1;



>>>>> 증가 연산자


 #include <stdio.h>

 void main() {
   int a=30, b=30;

   printf("원래 a의 값 : %d\n", a);
   printf("원래 b의 값 : %d\n", b);
   printf("++a의 결과 : %d\n", ++a);
   printf("++연산 후의 값 : %d\n", a);
   printf("b++의 결과 : %d\n", b++);
   printf("++연산 후의 값 : %d\n", b);
 }




>>>>> 감소 연산자


 #include <stdio.h>

 void main() {
   int a=30, b=30;

   printf("원래 a의 값 : %d\n", a);
   printf("원래 b의 값 : %d\n", b);
   printf("--a의 결과 : %d\n", --a);
   printf("--연산 후의 값 : %d\n", a);
   printf("b--의 결과 : %d\n", b--);
   printf("--연산 후의 값 : %d\n", b);
 }




>>>>> 상수에 대한 연산은 에러를 발생시킨다.


#include <stdio.h>
#include <conio.h>

 void main() {
   int a=10;

   printf("++(10)=%d\n", ++(10));
   getch();
 }




>>>>> 권장이 되지 않는 예제


//팀원간 소스분석에 지연 시간이 발생합니다.
//개발후 유지보수에 많은 시간이 소모됩니다.
//소스는 간결하고 분석이 용이해야 합니다.

#include <stdio.h>
#include <conio.h>

 void main() {
   int a=10;
   int b=10;

   printf("(++a - ++a)+(++b)=%d\n", (++a - ++a)+(++b));
   getch();
 }




3. 할당 연산자
   - +=, -=, *=, /=
   - 연산 속도의 증가가 사용 목적
   - a += b;
     a = a + b;
 


>>>>> 할당 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=3;

   printf("원래 a의 값 : %d\n", a);
   printf("%d + %d의 값 : %d\n", a, b, a+=b);
   printf("변경된 a 값 : %d\n",a);
   printf("%d - %d의 값 : %d\n", a, b, a-=b);
   printf("변경된 a 값 : %d\n",a);
   printf("%d * %d의 값 : %d\n", a, b, a*=b);
   printf("변경된 a 값 : %d\n", a);
   printf("%d / %d의 값 : %d\n", a, b, a/=b);
   printf("변경된 a 값 : %d\n", a);
 }




4. 관계 연산자(비교 연산자)
   <, <=, >, >=, ==, !=
   - 관계 연산자는 참인 경우는 0 이외의 값, 기본 값은 1, 거짓인 경우는 0의 값이 리턴된다.
   - bool 타입이 없습니다.
     . 참: 0 이외의 모든 값은 참입니다. 따라서 -100도 참 입니다.
     . 거짓: 0만 거짓입니다.

 #include <stdio.h>

 void main() {
   int a=10, b=15;

   printf("%d > %d : %d\n", a, b, a>b);
   printf("%d >= %d : %d\n", a, b, a>=b);
   printf("%d < %d : %d\n", a, b, a<b);
   printf("%d <= %d : %d\n", a, b, a<=b);
   printf("%d == %d : %d\n", a, b, a==b);
   printf("%d != %d : %d\n", a, b, a!=b);
}




>>>>> 두개의 수를 입력받아 앞의 수가 크면 1, 그렇지 않으면 0을 출력하는 프로그램


 #include <stdio.h>

 void main() {
   int a, b;

   printf("첫번째 수를 입력하세요. : ");
   scanf("%d", &a);
   printf("두번째 수를 입력하세요. : ");
   scanf("%d", &b);
   printf("%d > %d의 결과는 %d입니다.\n", a, b, a>b);
 }




5. 논리 연산자
   !, &&, ||, &, |

>>>>>>>>>> 비트 and, or 연산자
#include <stdio.h>

main(){
 printf("10 | 3=%d\n", (10 | 3));
 printf("10 & 3=%d\n", (10 & 3));
}

/*
   0000 1010
  +0000 0011
  ----------
   0000 1011 --> 11


   0000 1010
  &0000 0011
  ----------
   0000 0010 --> 2
*/



>>>>>논리 연산자


 #include <stdio.h>

 void main() {
   int a=10, b=15, c=5, d=20;

   printf("%d>%d             => %d\n", a, b, a>b);
   printf("%d<%d             => %d\n", a, b, a<b);
   printf("%d<%d             => %d\n", c, d, c<d);
   printf("!(%d<%d)           => %d\n", c, d, !(c<d));
   printf("(%d>%d) && (%d<%d) => %d\n", a, b, c, d, (a>b)&&(c<d));
   printf("(%d>%d) || (%d<%d) => %d\n", a, b, c, d, (a>b)||(c<d));
   printf("(%d<%d) && (%d<%d) => %d\n", a, b, c, d, (a<b)&&(c<d));
   printf("(%d<%d) || (%d<%d) => %d\n", a, b, c, d, (a<b)||(c<d));
   printf("!(0)=> %d\n", !(0));
   printf("!(1)=> %d\n", !(1));
   printf("!(-100)=> %d\n", !(-100));
 }




 >>>>> 비트 연산자


#include <stdio.h>

 void main() {
   int a=0XD1, b=0XC4;

   printf("%X        => %d\n", a, a);
   printf("~%X       => %X\n", a, ~a);
   printf("%X        => %d\n", b, b);
   printf("~%X       => %X\n", b, ~b);
   printf("%X & %X => %X\n", a, b, a&b);
   printf("%X | %X => %X\n", a, b, a|b);
   printf("%X ^ %X => %X\n", a, b, a^b);
 }
 /*
  11010001
& 11000100
----------
  00010101 ==> 21 ==> 15
               10진수 16진수
 */




 >>>>> 이동연산자


- 왼쪽으로의 이동은 무조건 2배합니다.
- 오른쪽으로의 이동은 무조건 나누기2합니다.
- 2진수는 자리이동에따라 2배가 되던지, 그렇지 않으면 나누기 2배가 됩니다.

  0000 1000 ---> 8
  0001 0000 ---> 16
  0010 0000 ---> 32
 


  #include <stdio.h>

 void main() {
   int a=0XD1, b=0XC4;

   printf("원래의 값 : 10진수(%d), 16진수(%X)\n", a, a);
   printf("1번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 1, a << 1);
   printf("2번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 2, a << 2);
   printf("3번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 3, a << 3);
   printf("4번 왼쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", a << 4, a << 4);
   printf("\n");
   printf("원래의 값 : 10진수(%d), 16진수(%X)\n", b, b);
   printf("1번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 1, b >> 1);
   printf("2번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 2, b >> 2);
   printf("3번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 3, b >> 3);
   printf("4번 오른쪽 이동한 값 : 10진수(%d), 16진수(%X)\n", b >> 4, b >> 4);
 }

 /*
 0  0  0  0  0  0  0  0
 ----------------------
 12864 32 16 8  4  2  1
 */

Posted by 나비:D
:

▩ 변수의 이해 및 작성 규칙


1. 변수의 특징
   - 변수명은 영문자, 숫자, 밑줄(_) 문자만을 사용한다.
   - 변수명의 첫 문자는 반드시 영문자나 밑줄 문자이어야 한다.

      숫자는 변수명의 첫자로 올 수 없다.
   - 첫 문자를 숫자로 시작하면 상수로 인식한다.
   - 용도가 지정되어 있는 예약어는 변수명으로 사용할 수 없다.
   - 변수명은 가급적 의미 있는 이름을 사용한다.
   - C언어는 대소문자를 구별함으로 변수명에 대소문자를 주의한다.
   - 변수나 메소드의 첫자는 소문자, 클래스는 대문자를 주로 사용한다.
   - 변수의 마디는 대문자를 사용하는 경우가 많다.



2. 변수의 작성 규칙
   - 헝가리언 표기법
     . 회사이름: cn, comName, _com_name

   - 스칼라 표기법
     . 첫자를 무조건 대문자로하는 의미있는 변수명을 줍니다.
     . 회사이름: CompanyName, CompanyArea




>>>>> 상수를 이용하여 합, 차, 곱을 계산한 경우


 #include <stdio.h>

 void main() {
   printf("%d와 %d의 합은 %d입니다.\n", 30, 15, 30+15);
   printf("%d와 %d의 차는 %d입니다.\n", 30, 15, 30-15);
   printf("%d와 %d의 곱은 %d입니다.\n", 30, 15, 30*15);
 }




▩ 상수(리터럴)


   - 변수의 값 자체를 말합니다.
   - 숫자 상수: 10
   - 문자 상수: 'a'
   - 문자열 상수: "ABCDE"





>>>>> 간단한 성적처리 프로그램(정확한 소수 출력하도록 수정할 것)


- 변수를 사용하지 않으면 입력을 받을 수 없습니다.
- 정수/정수 = 정수가 됨으로 (float)정수/정수으로 변경하여 처리합니다.
  
 #include <stdio.h>

 void main() {
   char name[30];
   int hak;
   int kor;
   int eng;
   int mat;
   int tot;
   float ave;

   printf("정보를 입력하세요.\n\n");
   printf("이름을 입력하세요 : ");
   scanf("%s", name);
   printf("학번을 입력하세요 : ");
   scanf("%d", &hak);
   printf("국어점수를 입력하세요 : ");
   scanf("%d", &kor);
   printf("영어점수를 입력하세요 : ");
   scanf("%d", &eng);
   printf("수학점수를 입력하세요 : ");
   scanf("%d", &mat);
   tot=kor+eng+mat;
   ave=tot/3;
   printf("이름 : %s\n", name);
   printf("학번 : %d\n", hak);
   printf("국어 : %d\n", kor);
   printf("영어 : %d\n", eng);
   printf("수학 : %d\n", mat);
   printf("합계 : %d\n", tot);
   printf("평균 : %f", ave);
 }




>>>>> 변수의 초기화


- 변수에 미리 값을 할당하는 것을 초기화라고합니다.

 #include <stdio.h>

 void main() {
   char name[30]="Hong";
   int hak=3214;
   int kor=78;
   int eng=96;
   int mat=54;
   int tot=kor+eng+mat;
   float ave=tot/3;

   printf("이름 : %s\n", name);
   printf("학번 : %d\n", hak);
   printf("국어 : %d\n", kor);
   printf("영어 : %d\n", eng);
   printf("수학 : %d\n", mat);
   printf("합계 : %d\n", tot);
   printf("평균 : %f", ave);
 }




>>>>> 서로다른 형의 계산


- 작은 타입은 큰 변수 타입으로 흡수됩니다.
 
 #include <stdio.h>

 void main() {
   char c = 'T';
   int i = 10;
   float f = 20.1;

   printf("%c+%d = %d\n", c, i, c+i);
   printf("%d+%f = %f", i, f, f+i);
 }




>>>>> cast연산의 사용 1


 #include <stdio.h>

 void main() {
   int i = 10, j = 20;
   float f = 30.1;

   printf("%d+%f = %f\n", i, f, f+i);
   printf("%d+%f = %d\n", i, f, (int)f+i);
   printf("%d+%d = %f\n", i, j, (float)i+j);
 }




>>>>> cast 연산의 사용 2


 #include <stdio.h>

 void main() {
   char c = 'A';
   int i = 10;
   float f = 3.2;

   printf("(int)(c+i+f)의 결과 : %d\n", (int)(c+i+f));
   printf("(c+i+f)의 결과 : %f\n", c+i+f);
   printf("(int)f*i-2의 결과 : %d\n", (int)f*i-2);
   printf("f*i-2의 결과 : %f\n", f*i-2);
 }

Posted by 나비:D
:

▩ 자료형의 종류
 

- 하드웨어의 제한된 CPU Resource와 Memory 때문에 데이터 타입을 정확하게 지정을 해야 메모

  리와 프로세서의 낭비를 줄일 수 있습니다.


1. 자료형의 종류

   - 기본형-문자형     크기      기억되는 값의 범위
     . char                1 Byte    -128 ~ 127

     ※ 바이트 분리의 원리

        0000 0000 ---> 0
        0000 0001 ---> 1
        ~
        ~
        0111 1111 --->  127 

                               OS는 지정된 데이터크기의 첫비트가 0이면 양수, 1이면 음수로 처리합니다.
        1000 0000 ---> -128  첫비트가 1임으로 음수로 처리됩니다.
        1000 0001 ---> -127
        1000 0010 ---> -126
        1000 0011 ---> -125
        ~
        ~
        1111 1111 ---> -1
        0000 0000 ---> 0



     . unsigned char   1 Byte    0 ~ 255

   - 기본형-정수형     크기      기억되는 값의 범위
     . short           2 Byte    -32768 ~ 32767
     . unsigned short  2 Byte    0 ~ 65535
     . int             2,4 Byte  -32768 ~ +32767, -2147483648 ~ 2147483647
     . unsigned int    2,4 Byte  0 ~ 65535, 0 ~ 4294967295
     . long            4 Byte    -2147483648 ~ 2147483647
     . unsigned long   4 Byte    0 ~ 4294967295
 
   - 기본형-실수형     크기      기억되는 값의 범위
     . float           4 Byte    3.4e-38 ~ 3.4e38
     . double          8 Byte    1.7e-308 ~ 1.7e308
     . long double     10 Byte   3.4e-4932 ~ 3.4e4932
  
   - 기본형-나열형
     . enum            enum{sero, one, two, three, four} a, b

   - 기본형-무치형
     . void

   - 합성형-배열형
     . int a[5]

   - 포인터형 int *ptr
  
   - 구조체형   struct

   - 공용체형   union




2. 최대 최소값의 연산

   컴퓨터                    사람
============================
  01111111 11111111 =  32767
+                        1
-------------------
  10000000 00000000 = -32768


   컴퓨터                    사람
============================
  10000000 00000000 = -32768
-                        1
-------------------
  01111111 11111111 =  32767



>>>>> 관련 예제


#include <stdio.h>
#include <conio.h>

void main() {
    char k;  //-128 ~ +127

    k=127; printf("k=%d", k); //127
    printf("\n");

    //127+1: const int
    k=127+1; printf("k=%d", k); //-128
    printf("\n");

    //-128 + (255-128) = -1, 11111111
    k=255; printf("k=%d", k); //-1
    printf("\n");

    //11111111 + 1 = 00000000
    k=256; printf("k=%d", k); //0

}




>>>>> sizeof()함수의 사용


 #include <stdio.h>

 void main() {
   char c;
   int i;
   long l;
   unsigned int ui;
   unsigned long ul;
   float f;
   double d;

   printf("c형의 크기는 %d바이트입니다.\n", sizeof(c));
   printf("int형의 크기는 %d바이트입니다.\n", sizeof(i));
   printf("long형의 크기는 %d바이트입니다.\n", sizeof(l));
   printf("unsigned int형의 크기는 %d바이트입니다.\n", sizeof(ui));
   printf("unsigned long형의 크기는 %d바이트입니다.\n", sizeof(ul));
   printf("float형의 크기는 %d바이트입니다.\n", sizeof(f));
   printf("double형의 크기는 %d바이트입니다.\n", sizeof(d));
  
   printf("\n상수의 데이터사이즈\n");
  
   printf("a문자의 크기 %d입니다.\n", sizeof('a'));  //1
   printf("b문자의 크기 %d입니다.\n", sizeof('b'));  //1

   //'a', 'b', '\0'
   printf("ab문자의 크기 %d입니다.\n", sizeof("ab"));//3
   printf("abcd의 크기 %d입니다.\n", sizeof("abcd"));//5
   printf("10의 크기 %d입니다.\n", sizeof(10));      //4

   printf("10.5의 크기 %d입니다.\n", sizeof(10.5));  //8
   printf("10.5의 크기 %d입니다.\n", sizeof(10.5f)); //4
 }




3. %d의 출력(#은 공백을 의미)
   - 123일경우
      %d: 123
     %7d: ####123
     %7d: ###1234
     %7d: ##12345



4. %f의 출력
   - %10.3f 처럼 사용
   - 소수 자릿수 지정시 자동 반올림
   - 전체 자리수가 많으면 왼쪽 부분이 공백으로 채워짐

   - 데이터가 123.456일경우의 출력결과
     %7.3f : 123.456
     %8.3f : #123.456
     %8.4f : 123.4560
     %8.2f : ##123.46 <-- 자리올림 발생
     %2.1f : 123.5    <-- 전체자리수 보다작은 자리수는 사용하지 말것
     %.1f  : 123.5    
     %8.0f :      123 <-- 정수만 나옴




>>>>> 실수형의 출력


 #include <stdio.h>

 void main() {
   float f=256.124;
   float g=256.0;
   float h=256;

   printf("%f\n", f);
   printf("%7.3f\n", f);
   printf("%f\n", g); //소수이하 무조건 6자리가 출력됨
   printf("%f\n", h);
 }




>>>>> 소수자리가 6자리가 넘는 경우의 출력


- float형의 경우 소수이하 5자리까지만 정확도가 유지됩니다.
 
#include <stdio.h>
#include <conio.h>

 void main() {
   float k=120.12345678;
   double dk=120.12345678;

   printf("값은: %12.6f\n", k); //120.123459
   printf("값은: %12.7f\n", k); //120.1234589
   printf("값은: %12.8f\n", k); //120.12345886
   printf("\n");
   printf("값은: %12.6f\n", dk);//120.123457
   printf("값은: %12.7f\n", dk);//120.1234568
   printf("값은: %12.8f\n", dk);//120.12345678

   getch();
 }




>>>>> 데이터의 역순으로 출력


- 숫자는 정렬이 오른쪽 기준입니다.
- 문자는 왼쪽 정렬입니다.

#include <stdio.h>
#include <conio.h>

void main() {
  float f=256.124;
  float g=256.0;
  float h=256;

  printf("%-f\n", f);
  printf("%-10.3f\n", f);
  printf("%-10.3f\n", g);
  printf("%10.3f\n", h);
  getch();
}




5. %e의 출력
   - 정수 한자리만 남기고 전부 소수화 시킨다.



>>>>> 지수 형태의 출력


 #include <stdio.h>

 void main() {
   float f=256.124;
   float g=256.0;
   float h=256;

   printf("%e\n", f);
   printf("%e\n", g);
   printf("%e\n", h);
 }




6. %c: 문자의 출력



>>>>> 아스키코드의 출력


 #include <stdio.h>

 void main() {
   char c;

   printf("임의의 문자를 입력하세요 : ");
   scanf("%c", &c);
   printf("입력한 문자 : %c\n", c);
   printf("아스키 코드 : %d\n", c);
 }




>>>>> 문자형식의 연산


 #include <stdio.h>

 void main() {
   char c='c';
  
   printf("원래 문자는 %c입니다.\n", c);
   printf("%c의 다음 문자는 %c입니다.\n", c, c+1);
   printf("%c의 이전 문자는 %c입니다.\n", c, c-1);
   printf("%c의 대문자는 %c입니다.\n", c, c-32);
 }




7. %s: 문자열의 입/출력



>>>>> 문자열의 입력


 #include <stdio.h>

 void main() {
   char name[30], depart[30];

   printf("이름을 입력하세요 : ");
   scanf("%s", name);
   printf("학과를 입력하세요 : ");
   scanf("%s", depart);
   printf("당신의 이름은 %s입니다.\n", name);
   printf("당신의 학과는 %s입니다.", depart);
 }




>>>>> 문자열 입출력


 #include <stdio.h>

 void main() {
   char frt[30];
   int dan, num;

   printf("품목을 입력하세요. ");
   scanf("%s", frt);
   printf("판매단가를 입력하세요. ");
   scanf("%d", &dan);
   printf("판매수량을 입력하세요. ");
   scanf("%d", &num);
   printf("\n");
   printf("   ** 품목별 판매 현황 **\n");
   printf("=============================\n");
   printf("품목\t단가\t수량\t금액\n");
   printf("-----------------------------\n");
   printf("%s\t%d\t%d\t%d\n", frt, dan, num, dan*num);
   printf("-----------------------------\n");
 }

Posted by 나비:D
:

▩ 자료의 입력
 
1. scanf()
   - scanf("제어문자", &변수);: 키보드에서 값을 입력받아 제어문자의 형식으로 변수에 저장한다.



>>>>> 두 수를 입력받아 합을 구하기


 #include <stdio.h>

 void main() {
   int a, b;

   printf("첫번째 숫자를 입력하세요 : ");
   scanf("%d", &a);
   printf("두번째 숫자를 입력하세요 : ");
   scanf("%d", &b);
   printf("%d와 %d의 합은 %d입니다.", a, b, a+b);
 }




>>>>> 10진수를 입력받아 16진수로 출력


 #include <stdio.h>

 void main() {
   int i;

   printf("10진수의 숫자를 입력하세요 : ");
   scanf("%d", &i);
   printf("%d의 16진수는 %X입니다.", i, i);
 
   printf("\n\n");

   printf("16진수의 숫자를 입력하세요 : ");
   scanf("%x", &i);
   printf("%x의 10진수는 %d입니다.", i, i);
 }




>>>>> scanf함수로 한문자 입력 받기


 #include <stdio.h>

 void main() {
   char c;

   printf("한 문자를 입력하세요. ");
   scanf("%c", &c);
   printf("입력된 문자는 %c입니다.");
   putchar(c);
 }



  
UP!!!▷ 국어, 영어 과목의 점수를 입력받아 총점과 평균을 구하는 프로그램을 작성하세요.
 #include <stdio.h>

 void main() {
   int kuk;
   int eng;
   int tot;
   int avg;

   printf("국어 점수를 입력하세요. ");
   scanf("%d", &kuk);

   printf("영어 점수를 입력하세요. ");
   scanf("%d", &eng);

   tot = kuk+eng;
   avg = tot / 2;

   printf("총점:%d 평균:%d\n", tot, avg);
 }




2. getchar()
   - 입력받은 문자를 화면에 출력하고 Enter를 눌러야 진행한다.
   - 키보드에서 입력된 문자를 버퍼에 저장한후 처리한다.
   - getchar() 함수는 항상 입력 버퍼를 검사하며 문자가 있으면 거기서 한 문자를 가져오고, 없으

      면 문자를 콘솔창에서 입력을 받습니다.
   - 'Enter'도 한문자로 처리합니다.
   - scanf() 함수도 같은 원리를 가지고 있습니다.

  


>>>>> 버퍼 사용을 확인하는 입력 예제 getchar()


#include <stdio.h>

void main(){
 char c;

 printf("한 문자를 입력하세요.");

 c=getchar();
 printf("1문자 %c입니다.\n", c);

 c=getchar();
 printf("2문자 %c입니다.\n", c);

 c=getchar();
 printf("3문자 %c입니다.\n", c);

}




>>>>> 버퍼 사용을 확인하는 입력 예제 scanf()


#include <stdio.h>

void main(){
 char c;

 printf("한 문자를 입력하세요.");

 scanf("%c", &c);

 printf("입력된 문자는 %c입니다.\n", c);

 printf("\n");

 scanf("%c", &c);

 printf("입력된 문자는 %c입니다.\n", c);
 putchar(c);
}




3. getch()
   - 프로그램의 진행중 잠시 메세지를 출력하거나 멈춤을 지정할 때 많이 사용한다.
   - 엔터키를 누르지 않아도 진행한다.



>>>>> getch()함수의 이용


 #include <stdio.h>

 void main() {
    char c;

    printf("한 문자를 입력하세요. ");
    c=getch();
    printf("\n입력된 문자는 %c입니다.", c);
   
    printf("한 문자를 입력하세요. ");
 c=getch();
    printf("\n입력된 문자는 %c입니다.", c);
 }




4. 함수 도움말 보기(MSDN 설치)
    - F1, Ctrl + F1




5. 한문자의 입출력 : getchar, putchar
   - getchar의 입력은 반드시 int형 변수를 사용한다.
   - 버퍼로 처리 된다.
   - getchar함수는 입력 종료를 검출하면 -1, EOF를 표시한다.




6. 한 행의 입출력 : gets, puts
   - 문자열은 char의 배열(문자의 배열)이다.
   - gets() 는 엔터를 누를 때까지 입력을 받는다.
   - puts() 는 출력을 하고 개행을 한다.
   - 입력 종료는 null을 검사한다.




7. 변환문자를 통한 입력 함수: scanf(입력 종료는 EOF를 검사한다.)
   - %o   : int            <-- 8진수로 입력
   - %d   : int            <-- 10진수로 입력
   - %ld  : long int, int  <-- 긴 정수형 10진수 입력
   - %x   : int            <-- 16진수 입력
   - %f   : float          <-- 실수 입력
   - %lf  : double         <-- double형 실수 입력
   - %c   : char, int      <-- 한 문자 입력
   - %s   : char *, 배열   <-- 문자열, 배열 입력

Posted by 나비:D
:

▩ C언어 프로그램의 구조


1. C언어 프로그램의 구조와 개행

#include <stdio.h>

void main(){
    printf("abc");
    printf("def\n");
    printf("123\n456\n789\n");
}

/*
abcdef
123
456
789
*/



▩ 자료 출력하기


1. 확장 문자의 이해
   - '\a': 경보음  07
   - '\n': 개행    0A
   - '\t': 탭 코드 09
   - '\000': 8진수
   - '\xhh': 16진수
   - '\0' : 문자 코드 0, null 문자



>>>>> 확장(제어)문자의 사용
 #include <stdio.h>

 void main() {
   printf("\t** 월별 판매 결과 **\n");
   printf("====================================\n");
   printf("품목\t서울\t부산\t광주\t인천\n");
   printf("------------------------------------\n");
   printf("사과\t50\t40\t35\t60\n");
   printf("귤\t60\t80\t75\t35\n");
   printf("배\t55\t44\t33\t77\n");
   printf("------------------------------------\n");
 }




2. 아스키 코드표의 이해
   - 7비트 코드
   - 키보드의 자판은 아스키코드로 대응됨
   - 8번째 비트가 1인경우 한글을 처리하는 로직을 구성 할 수 있음




3. TAB 키의 작동의 이해
   - 탭은 절대 좌표를 사용하며 탭사이즈의 배수 + 1의 위치로 이동함
   - 일반적으로 사이즈는 4를 이용합니다.

123456789012345678901234567890
100            1000
10              100
1               1
1,000          5,000
3,500          3,000




4. 문자열 출력 및 제어 문자 출력하기
   - printf()
     . %d   : 10진 정수 출력
     . %4d  : 출력시 자리수를 지정함 숫자의 크기와 관련 없이 무조건 4자리의 공간을 확보함
                 자리수가 부족해도 정수 부분은 그대로 출력된다. 숫자는 오른쪽 정렬됩니다.
     . %4f  : 실수 출력, 정수 부분이 출력되고 소수는 무조건 6자까지 출력됨
     . %4.0f: 소수점은 출력되지 않음
     . %4.1f: 소수 자릿수 부족시 반올림 실행, 소수점도 자리수에 해당, 정수는 자리수에 관련 없이

                 무조건 출력됨, 정수2자리, 실수1자리
     . %o   : 8진수 출력, 영문 소문자 'o'만 가능
     . %x   : 16진수 출력, %X는 16진수가 대문자로 출력됨


   - putchar() 함수의 사용
     . 한문자를 출력합니다.
     . '': 한문자를 의미
     . "": 문자열을 의미, 실제 보이는 문자보다 null문자가 한자 더 있음('\0')




>>>>> 제어 문자를 통한 출력


 #include <stdio.h>

 void main() {
   int a=5, b=9, c=1235, d=1;
   int e=40, f=549, g=5, h=1160;
   int i=155, j=1249, k=3, m=10;
   float q=12.24f, w=45.265f, r=814.32f, t=369.254f;

   printf("\t** 월별 판매 결과 **\n");
   printf("======================================\n");
   printf("품목\t서울\t부산\t광주\t인천\n");
   printf("--------------------------------------\n");
   printf("사과\t%4d\t%4d\t%4d\t%4d\n", a, b, c, d);
   printf("귤\t%4d\t%4d\t%4d\t%4d\n", e, f,g, h);
   printf("배\t%4d\t%4d\t%4d\t%4d\n", i, j, k, m);
   printf("--------------------------------------\n");
   printf("금액\t%4.1f\t%4.1f\t%4.1f\t%4.1f\n", q, w, r, t);
   printf("--------------------------------------\n");
 }




5. 변환문자를 통한 출력 함수: printf(변환 문자열 목록)
   - %o      : int            <-- 8진수로 출력
   - %d      : int            <-- 10진수로 출력
   - %ld     : long int, int  <-- 긴 정수형 10진수 출력
   - %x, %X  : int            <-- 16진수 출력, 대소문자 구분 출력
   - %f      : float, double  <-- 실수 출력, 9.f는 반올림이 되어 출력이 됨

                                          소수점은 자리수로 포함이 됨
   - %e, %E  : float, double  <-- 실수를 지수 형식으로 출력, 1.234560e+03, 1.234560e-03
   - %c      : char, int      <-- 한 문자 출력
   - %s      : char *, 배열   <-- 문자열, 배열 출력




>>>>> 진수 변환하여 출력하기


#include <stdio.h>

 void main() {
   int a=511;

   printf("원래의 값은 %d입니다.\n", a);
   printf("8진수의 값은 %o입니다.\n", a);
   printf("16진수의 값은 %X입니다.\n", a);
   printf("1을 더한 값은 %d입니다.\n", a+1);
   printf("8진수의 값은 %o입니다.\n", a+1);
   printf("16진수의 값은 %X입니다.\n", a+1);
   printf("2를 더한 값은 %d입니다.\n", a+2);
   printf("8진수의 값은 %o입니다.\n", a+2);
   printf("16진수의 값은 %X입니다.\n", a+2);
 }

 /*
 10 Base   2 Base   8 Base   16 Base
 -------------------------------------
 0            0        0         0
 1            1        1         1
 2           10        2         2
 3           11        3         3
 4          100        4         4
 5          101        5         5
 6          110        6         6
 7          111        7         7
 8         1000       10         8
 9         1001       11         9
 10        1010       12         A
 11        1011       13         B
 12        1100       14         C
 13        1101       15         D
 14        1110       16         E
 15        1111       17         F
 16       10000       20        10
 
*/




>>>>> 단일문자의 출력


 #include <stdio.h>

 void main() {
   putchar('K');
   putchar('o');
   putchar('r');
   putchar('e');
   putchar('a');
   printf("\n");
   putchar('S');
   putchar('e');
   putchar('o');
   putchar('u');
   putchar('l');
   printf("\n");
 }

Posted by 나비:D
:

▩ C, C++언어의 이해


1. 교육 효과와 방향
   - 메모리에 대한 이해
   - 함수에 대한 이해
   - 포인터에 대한 이해
   - 제어문에 대한 이해




2. 프로그래밍 언어 별 특징
   - C
     . 함수 기반 언어, 배우기 쉽고 구현이 쉽습니다.
     . 프로그램이 커지면 설계가 어렵고 유지보수가 어려워 요즘은 C++ 로 전향되는 경우도 많이

       있습니다.

   - C++
     . C의 특징을 전부 가지고 있습니다. 객체지향의 기술을 구현 할 수 있습니다.
     . 모듈을 객체의 형태로 구현함으로 정확한 설계만 된다면 견고하고 유지보수가 좋은 프로그램

       개발할 수 있습니다.
     . 모든 개발자가 객체지향에 대한 개념이 있어야 개발이 가능합니다.

   - VC++
     . C, C++, Windows 개념

   - VB, Powerbuilder
     . DB 프로그램 제작




3. C 언어의 역사
   - ALG --> CPL --> BCPL --> B --> C --> C++ --> Visual C++ --> C#, Visual C++.net
   - C언어는 1972년 미국의 AT&T Bell 연구소에 근무하는 Dennis Ritchie와 Ken Thompson이 마

     로 컴퓨터 수준의 새로운
     운영체제인 Unix를 개발하던 과정에서 프로그래밍 개발을 위한 도구의 필요성을 느껴 처음 만

     졌다.




4. C 언어의 특징
   - C언어는 중급 기능의 언어이다. Assembler -- C -- Visual Basic
   - C언어는 구조화된 언어이다. 함수의 이용
   - C언어는 Assembly언어에 비하여 문법이 유연하고, 다른 운영체제에 이식하기 쉬우며, 개발 속

     훨씬 빠르다.
   - C언어는 절차 지향언어이다. 따라서 실행 순서가 매우 중요하다.
   - 대소문자를 구별한다.
   - 코드양을 줄이기 위한 다양한 방법이 있다.
   - 증가, 대입, 조건, 비트, 감소, 컴마, 포인터등 연산자가 풍부하다.
   - 포인터의 이용으로 메모리를 세밀하게 프로그래밍 할 수 있다.
   - char, int, float, double, signed, unsigned, long, short, 구조체, 공용체, const, register, 형등

      이터형 다양   
   - 최소한 1개 이상의 함수로 구성된다. (main())
   - if, for, while, do, switch, break, continue등 구조화 제어문이 갖추어져있다.
   - 컴파일에 앞서 텍스트레벨의 프리프로세서를 지원한다.
   - C자체 입출력 기능은 없음으로 외부함수로 지원한다.
   - TAB과 같은 확장 문자열의 표현이 가능하다.
   - 함수의 프로토타입을 선언하여 프로그램 작성을 효율적으로 하게 해준다.




5. C++언어의 특징
   - C언어의 특징에 OOP(객체지향)개념을 도입한 언어
   - 클래스란 개념이 도입되었으며 C언어의 구조체의 발전형이다. 구조체처럼 데이터만 가지고 있

      것이 아니라 메소드도 포함하고 있는 단 C++의 변종 구조체는 메소드도 포함한다.
   - 객체라는 개념이 추가되었으며 클래스의 복제판으로 메모리에 저장된다.
   - 연산자 중복기능, 함수 중복 기능, 상속 기능을 가지고 있다.
  


6. 컴파일 과정

      Compiler                Linker -- Library
               ↓                       ↓
   cpp ------------> obj ------------> EXE
   소스파일               기계어 파일          실행파일

Posted by 나비:D
:

원문 : http://www.codemaker.co.uk/it/tips/ado_conn.htm


MDAC 2.8 다운로드 : http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c


ADO Connection String Samples

This page contains sample ADO connection strings for ODBC DSN / DSN-Less, OLE DB Providers, Remote Data Services (RDS), MS Remote, and MS DataShape.

Also included are ADO.NET connection strings for MySQL, ODBC, OLE DB, Oracle, and SQL Server .NET Data Providers.

These sample connection strings are compiled by Carl Prothman, a Microsoft ASP.NET MVP and Microsoft Certified Professional (MCP)

If you have an ADO or ADO.NET connection string that is not listed below, or you see an connection string that does not have the correct setting, please send an email to Carl Prothman.  Thanks!


Table of Contents


ODBC DSN Connections

Using an ODBC DSN (Data Source Name) is a two step process.

1) You must first create the DSN via the "ODBC Data Source Administrator" program found in your computer's Control Panel (or Administrative Tools menu in Windows 2000). Make sure to create a SYSTEM DSN (not a USER DSN) when using ASP. You can also create the DSN via Visual Basic code.

2) Then use the following connection string - with your own DSN
name of course.

oConn.Open "DSN=mySystemDSN;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 
oConn.Open "FILEDSN=c:\somepath\mydb.dsn;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see:  About ODBC data sources and 
How to Use File DSNs and DSN-less Connections

Note: The problem with DSN is that Users can (and will) modify or delete them by mistake, then your program won't work so well. So it's better to use a DSN-Less or OLE DB Provider connection string - with a Trusted Connection if possible!


ODBC DSN-Less Connections

For Standard Security:

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=c:\somepath\mydb.mdb;" & _ "Uid=admin;" & _ "Pwd=" 

If you are using a Workgroup (System database):

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=c:\somepath\mydb.mdb;" & _ "SystemDB=c:\somepath\mydb.mdw;", _ "myUsername", "myPassword" 

If want to open up the MDB exclusively

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=c:\somepath\mydb.mdb;" & _ "Exclusive=1;" & _ "Uid=admin;" & _ "Pwd=" 

If MDB is located on a Network Share

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=\\myServer\myShare\myPath\myDb.mdb;" & _ "Uid=admin;" & _ "Pwd=" 

If MDB is located on a remote machine

- Or use an XML Web Service via SOAP Toolkit or ASP.NET
- Or upgrade to SQL Server and use an IP connection string
- Or use an ADO URL with a remote ASP web page
- Or use a MS Remote or RDS connection string
  

If you don't know the path to the MDB (using ASP)

<% ' ASP server-side code oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=" & Server.MapPath(".") & "\myDb.mdb;" & _ "Uid=admin;" & _ "Pwd=" %>

This assumes the MDB is in the same directory where the ASP page is running. Also make sure this directory has Write permissions for the user account.
 

If you don't know the path to the MDB (using VB)

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=" & App.Path & "\myDb.mdb;" & _ "Uid=admin;" & _ "Pwd="

This assumes the MDB is in the same directory where the application is running.

For more information, see:  Microsoft Access Driver Programming Considerations

To view Microsoft KB articles related to Microsoft Access Driver, click here 


oConn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _ "System=myAS400;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see:   A Fast Path to AS/400 Client/Server


oConn.Open "Driver={Microsoft dBASE Driver (*.dbf)};" & _ "DriverID=277;" & _ "Dbq=c:\somepath"

Then specify the filename in the SQL statement:

oRs.Open "Select * From user.dbf", oConn, , ,adCmdText

Note: MDAC 2.1 (or greater) requires the Borland Database Engine (BDE) to update dBase DBF files. (Q238431).

For more information, see:  dBASE Driver Programming Considerations

To view Microsoft KB articles related to Microsoft dBASE Driver, click here 


oConn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _ "DriverId=790;" & _ "Dbq=c:\somepath\mySpreadsheet.xls;" & _ "DefaultDir=c:\somepath" 

For more information, see:  Microsoft Excel Driver Programming Considerations

To view Microsoft KB articles related to Microsoft Excel Driver, click here 


If using INFORMIX 3.30 ODBC Driver

oConn.Open "Dsn='';" & _ "Driver={INFORMIX 3.30 32 BIT};" & _ "Host=myHostname;" & _ "Server=myServerName;" & _ "Service=myServiceName;" & _ "Protocol=olsoctcp;" & _ "Database=myDbName;" & _ "UID=myUsername;" & _ "PWD=myPassword" & _ ' Or
oConn.Open "Dsn=myDsn;" & _ "Host=myHostname;" & _ "Server=myServerName;" & _ "Service=myServiceName;" & _ "Protocol=onsoctcp;" & _ "Database=myDbName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

If using INFORMIX-CLI 2.5 ODBC Driver

oConn.Open "Driver={Informix-CLI 2.5 (32 Bit)};" & _ "Server=myServerName;" & _ "Database=myDbName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" & _

For more information, see: Informix Developer ZoneConnection to ODBC Data Source,


For the local machine

oConn.Open "Driver={Easysoft IB6 ODBC};" & _ "Server=localhost;" & _ "Database=localhost:C:\Home\Data\Mydb.gdb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For a remote machine

oConn.Open "Driver={Easysoft IB6 ODBC};" & _ "Server=myMachineName;" & _ "Database=myMachineName:C:\Home\Data\Mydb.gdb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For more information, see:  Connecting to InterBase and Easysoft


For the local machine

oConn.Open "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};" & _ "Server=localhost;" & _ "Database=localhost:C:\Home\Data\Mydb.gdb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For a remote machine

oConn.Open "Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};" & _ "Server=myMachineName;" & _ "Database=myMachineName:C:\Home\Data\Mydb.gdb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For more information, see: Google Search  (if you know a direct URL email me)


oConn.Open "Driver={Lotus NotesSQL 3.01 (32-bit) ODBC DRIVER (*.nsf)};" & _ "Server=myServerName;" & _ "Database=mydir\myDbName.nsf;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" & _

For more information, see:   Connection keywords


To connect to a local database

oConn.Open "Driver={mySQL};" & _ "Server=MyServerName;" & _ "Option=16834;" & _ "Database=mydb" 

To connect to a remote database

oConn.Open "Driver={mySQL};" & _ "Server=db1.database.com;" & _ "Port=3306;" & _ "Option=131072;" & _ "Stmt=;" & _ "Database=mydb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see:  Programs Known to Work with MyODBC


For the current Oracle ODBC Driver from Microsoft

oConn.Open "Driver={Microsoft ODBC for Oracle};" & _ "Server=OracleServer.world;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For the older Oracle ODBC Driver from Microsoft

oConn.Open "Driver={Microsoft ODBC Driver for Oracle};" & _ "ConnectString=OracleServer.world;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see:  Connection String Format and Attributes

To view Microsoft KB articles related to Microsoft ODBC for Oracle, click here 


oConn.Open "Driver={Oracle ODBC Driver};" & _ "Dbq=myDBName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

Where:  The DBQ name must be defined in the tnsnames.ora file

For more information, see:  Oracle8 ODBC Driver Help, Oracle ODBC FAQs, [asporacle] listserv FAQs, and ASPDB Oracle


oConn.Open "Driver={Microsoft Paradox Driver (*.db )};" & _ "DriverID=538;" & _ "Fil=Paradox 5.X;" & _ "DefaultDir=c:\dbpath\;" & _ "Dbq=c:\dbpath\;" & _ "CollatingSequence=ASCII" 

Note: MDAC 2.1 (or greater) requires the Borland Database Engine (BDE) to update Paradox ISAM fDBF files. (Q230126).

Note: There is an extra space after "db" in the Paradox Driver name

For more information, see:  Paradox Driver Programming Considerations

To view Microsoft KB articles related to Microsoft Paradox Driver, click here 


For Standard Security

oConn.Open "Driver={SQL Server};" & _ "Server=MyServerName;" & _ "Database=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For Trusted Connection security

oConn.Open "Driver={SQL Server};" & _ "Server=MyServerName;" & _ "Database=myDatabaseName;" & _ "Uid=;" & _ "Pwd=" ' Or
oConn.Open "Driver={SQL Server};" & _ "Server=MyServerName;" & _ "Database=myDatabaseName;" & _ "Trusted_Connection=yes" 

To Prompt user for username and password

oConn.Properties("Prompt") = adPromptAlways oConn.Open "Driver={SQL Server};" & _ "Server=MyServerName;" & _ "DataBase=myDatabaseName" 

To connect to SQL Server running on the same computer

oConn.Open "Driver={SQL Server};" & _ "Server=(local);" & _ "Database=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

To connect to SQL Server running on a remote computer (via an IP address)

oConn.Open "Driver={SQL Server};" & _ "Server=xxx.xxx.xxx.xxx;" & _ "Address=xxx.xxx.xxx.xxx,1433;" & _ "Network=DBMSSOCN;" & _ "Database=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

Where:
- xxx.xxx.xxx.xxx is an IP address
- 1433 is the default port number for SQL Server.
- "Network=DBMSSOCN" tells ODBC to use TCP/IP rather than Named
   Pipes (Q238949)
 

For more information, see:  SQLDriverConnect (ODBC)

To view Microsoft KB articles related to ODBC Driver for SQL Server, click here 


If using the Sybase System 12 (or 12.5) Enterprise Open Client ODBC Driver

oConn.Open "Driver={SYBASE ASE ODBC Driver};" & _ "Srvr=myServerName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

If using the Sybase System 11 ODBC Driver

oConn.Open "Driver={SYBASE SYSTEM 11};" & _ "Srvr=myServerName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

If using the Intersolv 3.10 Sybase ODBC Driver

oConn.Open "Driver={INTERSOLV 3.10 32-BIT Sybase};" & _ "Srvr=myServerName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see: Sybase System 10 ODBC Driver Reference Guide

To view Microsoft KB articles related to ODBC Driver for Sybase, click here 


oConn.Open "ODBC; Driver=Sybase SQL Anywhere 5.0;" & _ "DefaultDir=c:\dbpath\;" & _ "Dbf=c:\sqlany50\mydb.db;" & _ "Uid=myUsername;" & _ "Pwd=myPassword;" & _ "Dsn="""""

Note: Including the DSN tag with a null string is absolutely critical or else you get the dreaded -7778 error.

For more information, see:  Sybase SQL Anywhere User Guide


oConn.Open "Provider=Teradata;" & _ "DBCName=MyDbcName;" & _ "Database=MyDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see  Teradata ODBC Driver


oConn.Open _ "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=c:\somepath\;" & _ "Extensions=asc,csv,tab,txt" 

Then specify the filename in the SQL statement:

oRs.Open "Select * From customer.csv", _ oConn, adOpenStatic, adLockReadOnly, adCmdText

Note: If you are using a Tab delimited file, then make sure you create a schema.ini file, and include the "Format=TabDelimited" option.

For more information, see:  Text File Driver Programming Considerations

To view Microsoft KB articles related to Microsoft Text Driver, click here 


With a database container

oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _ "SourceType=DBC;" & _ "SourceDB=c:\somepath\mySourceDb.dbc;" & _ "Exclusive=No"  

Without a database container (Free Table Directory)

oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _ "SourceType=DBF;" & _ "SourceDB=c:\somepath\mySourceDbFolder;" & _ "Exclusive=No" 

For more information, see:  Visual FoxPro ODBC Driver and Q165492

To view Microsoft KB articles related to ODBC Driver for Visual FoxPro, click here 




OLE DB Data Link Connections

For Absolute Path

oConn.Open "File Name=c:\somepath\myDatabaseName.udl" 

For Relative Path

oConn.Open "File Name=myDatabaseName.udl" 

For more information, see:  HOWTO: Use Data Link Files with ADO

Note: Windows 2000 no longer contains the "New | Microsoft Data Link" menu  anymore. You can add the Data Link menu back in the menu list by running the "C:\Program Files\Common Files\System\Ole DB\newudl.reg" reg file, then right-click on the desktop and select "New | Microsoft Data
Link" menu.

Or you can also create a Data Link file by creating a text file and change it's file extension to ".udl", then double-click the file.

To view Microsoft KB articles related to Data Link File, click here 




OLE DB Provider Connections

oConn.Open "Provider=ADSDSOObject;" & _ "User Id=myUsername;" & _ "Password=myPassword"

For more information, see:  Microsoft OLE DB Provider for Microsoft Active Directory Service

To view Microsoft KB articles related to Data Link File, click here 


oConn.Open "Provider=Advantage OLE DB Provider;" & _ "Data source=c:\myDbfTableDir;" & _ "ServerType=ADS_LOCAL_SERVER;" & _ "TableType=ADS_CDX"

For more information, see:  Advantage OLE DB Provider (for ADO)


oConn.Open "Provider=IBMDA400;" & _ "Data source=myAS400;" & _ "User Id=myUsername;" & _ "Password=myPassword"

For more information, see:   A Fast Path to AS/400 Client/Server


oConn.Open "Provider=SNAOLEDB;" & _ "Data source=myAS400;" & _ "User Id=myUsername;" & _ "Password=myPassword"

For more information, see:  Connection and ConnectionString Property

To view Microsoft KB articles related to OLE DB Provider for AS/400 and VSAM, click here 


For Data Warehouse

oConn.Open "Provider=Commerce.DSO.1;" & _ "Data Source=mscop://InProcConn/Server=mySrvName:" & _ "Catalog=DWSchema:Database=myDBname:" & _ "User=myUsername:Password=myPassword:" & _ "FastLoad=True"  ' Or oConn.Open "URL=mscop://InProcConn/Server=myServerName:" & _ "Database=myDBname:Catalog=DWSchema:" & _ "User=myUsername:Password=myPassword:" & _ "FastLoad=True" 

For Profiling System

oConn.Open "Provider=Commerce.DSO.1;" & _ "Data Source=mscop://InProcConn/Server=mySrvName:" & _ "Catalog=Profile Definitions:Database=myDBname:" & _ "User=myUsername:Password=myPassword"  ' Or oConn.Open _ "URL=mscop://InProcConnect/Server=myServerName:" & _ "Database=myDBname:Catalog=Profile Definitions:" & _ "User=myUsername:Password=myPassword"

For more information, see:  OLE DB Provider for Commerce Server, DataWarehouse, and Profiling System

To view Microsoft KB articles related to OLE DB Provider for Commerce Server, click here 


For TCP/IP connections

oConn.Open = "Provider=DB2OLEDB;" & _ "Network Transport Library=TCPIP;" &  _ "Network Address=xxx.xxx.xxx.xxx;" & _ "Initial Catalog=MyCatalog;" & _ "Package Collection=MyPackageCollection;" & _ "Default Schema=MySchema;" & _ "User ID=MyUsername;" & _ "Password=MyPassword" 

For APPC connections

oConn.Open = "Provider=DB2OLEDB;" &  _              "APPC Local LU Alias=MyLocalLUAlias;" &  _ "APPC Remote LU Alias=MyRemoteLUAlias;" &  _ "Initial Catalog=MyCatalog;" & _ "Package Collection=MyPackageCollection;" & _ "Default Schema=MySchema;" & _ "User ID=MyUsername;" & _ "Password=MyPassword"

For more information, see: Connection, ConnectionString Property, and Q218590

To view Microsoft KB articles related to OLE DB Provider for DB2, click here 


The Microsoft OLE DB Provider for DTS Packages is a read-only provider that exposes Data Transformation Services Package Data Source Objects.

oConn.Open = "Provider=DTSPackageDSO;" & _              "Data Source=mydatasource" 

For more information, see:  OLE DB Providers Tested with SQL Server

To view Microsoft KB articles related to OLE DB Provider for DTS Packages, click here 


oConn.Provider = "EXOLEDB.DataSource" oConn.Open = "http://myServerName/myVirtualRootName"

For more information, see:  Exchange OLE DB ProviderMessaging, Calendaring, Contacts, and Exchange using ADO objects

To view Microsoft KB articles related to OLE DB Provider for Exchange, click here 


Actually there is no OLE DB Provider for Excel.  However, you can use the OLE DB Provider for JET to read and write data in Microsoft Excel workbooks. Or you can use the ODBC Driver for Excel.


oConn.Open "Provider=MSIDXS;" & _ "Data source=MyCatalog"    

For more information, see: Microsoft OLE DB Provider for Microsoft Indexing Service

To view Microsoft KB articles related to OLE DB Provider for Index Server, click here 


oConn.Open "Provider=MSDAIPP.DSO;" & _ "Data Source=http://mywebsite/myDir;" & _ "User Id=myUsername;" & _ "Password=myPassword"

' Or

oConn.Open "URL=http://mywebsite/myDir;" & _ "User Id=myUsername;" & _ "Password=myPassword"

For more information, see: Microsoft OLE DB Provider for Internet Publishing and  Q245359

To view Microsoft KB articles related to OLE DB Provider for Internet Publishing, click here 


For standard security

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath\myDb.mdb;" & _ "User Id=admin;" & _ "Password=" 

If using a Workgroup (System Database)

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _            "Data Source=c:\somepath\mydb.mdb;" & _            "Jet OLEDB:System Database=MySystem.mdw", _ "myUsername", "myPassword" 

Note, remember to convert both the MDB and the MDW to the 4.0
database format when using the 4.0 OLE DB Provider.
 

If MDB has a database password

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath\mydb.mdb;" & _ "Jet OLEDB:Database Password=MyDbPassword", _ "myUsername", "myPassword" 

If want to open up the MDB exclusively

oConn.Mode = adModeShareExclusive oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath\myDb.mdb;" & _ "User Id=admin;" & _ "Password=" 

If MDB is located on a network share

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=\\myServer\myShare\myPath\myDb.mdb" 

If MDB is located on a remote machine

- Or use an XML Web Service via SOAP Toolkit or ASP.NET
- Or upgrade to SQL Server and use an IP connection string
- Or use an ADO URL with a remote ASP web page
- Or use a MS Remote or RDS connection string
 

If you don't know the path to the MDB (using ASP)

<% ' ASP server-side code oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath(".") & "\myDb.mdb;" & _ "User Id=admin;" & _ "Password=" %>

This assumes the MDB is in the same directory where the ASP page is running. Also make sure this directory has Write permissions for the user account.
 

If you don't know the path to the MDB (using VB)

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\myDb.mdb;" & _ "User Id=admin;" & _ "Password="

This assumes the MDB is in the same directory where the application is running.

For more information, see: OLE DB Provider for Microsoft JetQ191754, and Q225048

Note: Microsoft.Jet.OLEDB.3.51 only gets installed by MDAC 2.0.  Q197902
Note: MDAC 2.6 and 2.7 do not contain any of the JET components.  Q271908 and Q239114

To view Microsoft KB articles related to OLE DB Provider for Microsoft JET, click here 


You can also open an Excel Spreadsheet using the JET OLE DB Provider

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath\mySpreadsheet.xls;" & _ "Extended Properties=""Excel 8.0;HDR=Yes""" 

Where "HDR=Yes" means that there is a header row in the cell range
(or named range), so the provider will not include the first row of the
selection into the recordset.  If "HDR=No", then the provider will include
the first row of the cell range (or named ranged) into the recordset.

For more information, see:  Q278973

 You can also open a Text file using the JET OLE DB Provider

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _  "Data Source=c:\somepath\;" & _  "Extended Properties=""text;HDR=Yes;FMT=Delimited"""

'Then open a recordset based on a select on the actual file

oRs.Open "Select * From MyTextFile.txt", oConn, _ adOpenStatic, adLockReadOnly, adCmdText 

For more information, see:  Q262537

 
oConn.Open "Provider=Microsoft.Project.OLEDB.9.0;" & _ "Project Name=c:\somepath\myProject.mpp"

For more information, see:  Microsoft Project 2000 OLE DB Provider Information

To view Microsoft KB articles related to OLE DB Provider for Microsoft Project, click here 


oConn.Open "Provider=MySQLProv;" & _ "Data Source=mySQLDB;" & _ "User Id=myUsername;" & _ "Password=myPassword" 

For more information, see:   API - OLE DB, SWSoft, and Snippet


WARNING: This OLE DB Provider is considered obsolete by Microsoft

For Access (Jet)

oConn.Open "Provider=MSDASQL;" & _ "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=c:\somepath\mydb.mdb;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

For SQL Server

oConn.Open "Provider=MSDASQL;" & _   "Driver={SQL Server};" & _ "Server=myServerName;" & _ "Database=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"

For more information, see:  Microsoft OLE DB Provider for ODBC

To view Microsoft KB articles related to OLE DB Provider for ODBC, click here 


Microsoft OLE DB for Online Analytical Processing (OLAP) is a set of
objects and interfaces that extends the ability of OLE DB to provide
access to multidimensional data stores.

For ADOMD.Catalog

oCat.ActiveConnection = _ "Provider=MSOLAP;" & _ "Data Source=myOLAPServerName;" & _ "Initial Catalog=myOLAPDatabaseName" 

For ADOMD.Catalog (with URL)

oCat.ActiveConnection = _ "Provider=MSOLAP;" & _ "Data Source=http://myServerName/;" & _ "Initial Catalog=myOLAPDatabaseName" 

For Excel PivotTable

With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal) .Connection = "OLEDB;" & _ "Provider=MSOLAP;" & _ "Location=myServerDataLocation;" & _ "Initial Catalog=myOLAPDatabaseName" .MaintainConnection = True .CreatePivotTable TableDestination:=Range("A1"), _ TableName:= "MyPivotTableName" End With 

For more information, see:  OLE DB for OLAP, Catalog Object, PivotTable, Connecting Using HTTP

To view Microsoft KB articles related to OLE DB Provider for OLAP Services, click here 


oConn.Open "Provider=msdaora;" & _ "Data Source=MyOracleDB;" & _ "User Id=myUsername;" & _ "Password=myPassword"

For more information, see: Microsoft OLE DB Provider for Oracle

To view Microsoft KB articles related to OLE DB Provider for Oracle, click here 


For Standard Security

oConn.Open "Provider=OraOLEDB.Oracle;" & _ "Data Source=MyOracleDB;" & _ "User Id=myUsername;" & _ "Password=myPassword" 

For a Trusted Connection

oConn.Open "Provider=OraOLEDB.Oracle;" & _ "Data Source=MyOracleDB;" & _ "User Id=/;" & _ "Password=" ' Or
oConn.Open "Provider=OraOLEDB.Oracle;" & _ "Data Source=MyOracleDB;" & _ "OSAuthent=1"

Note: "Data Source=" must be set to the appropriate Net8 name which is known to the naming method in use. For example, for Local Naming, it is the alias in the tnsnames.ora file; for Oracle Names, it is the Net8 Service Name.

For more information, see: Oracle Provider for OLE DB Developer's Guide


oConn.Open "Provider=PervasiveOLEDB;" & _ "Data Source=C:\PervasiveEB" 

For more information, see:  OLE DB - ADO


The Microsoft OLE DB Simple Provider (OSP) allows ADO to access any data for which a provider has been written using the OLE DB Simple Provider Toolkit. Simple providers are intended to access data sources that require only fundamental OLE DB support, such as in-memory arrays or XML documents.

OSP in MDAC 2.6 has been enhanced to support opening hierarchical ADO Recordsets over arbitrary XML files. These XML files may contain the ADO XML persistence schema, but it is not required. This has been implemented by connecting the OSP to the MSXML2.DLL, therefore MSXML2.DLL or newer is required.

oConn.Open "Provider=MSDAOSP;" & _ "Data Source=MSXML2.DSOControl.2.6" oRS.Open "http://WebServer/VirtualRoot/MyXMLFile.xml",oConn

For more information, see: Microsoft OLE DB Simple Provider and Q272270

To view Microsoft KB articles related to OLE DB Provider for Simple Provider, click here 


oConn.Open "Provider=SQLBaseOLEDB;" & _ "Data source=mySybaseServer;" & _ "Location=mySybaseDB;" & _ "User Id=myUserName;" & _ "Password=myUserPassword"

For more information, see:  Books on-line   There is a one-time free sign-up,  then select "SQLBase OLE DB Data Provider User's Guide for v7.5 (20-6220-0001)", then download the zip file and extract the document.


For Standard Security

oConn.Open "Provider=sqloledb;" & _ "Data Source=myServerName;" & _ "Initial Catalog=myDatabaseName;" & _ "User Id=myUsername;" & _ "Password=myPassword" 

For a Trusted Connection

oConn.Open "Provider=sqloledb;" & _ "Data Source=myServerName;" & _ "Initial Catalog=myDatabaseName;" & _ "Integrated Security=SSPI" 

To connect to a "Named Instance"

oConn.Open "Provider=sqloledb;" & _ "Data Source=myServerName\myInstanceName;" & _ "Initial Catalog=myDatabaseName;" & _ "User Id=myUsername;" & _ "Password=myPassword"

Note: In order to connect to a SQL Server 2000 "named instance", you must have MDAC 2.6 (or greater) installed.
 

To Prompt user for username and password

oConn.Provider = "sqloledb" oConn.Properties("Prompt") = adPromptAlways oConn.Open "Data Source=myServerName;" & _ "Initial Catalog=myDatabaseName"  

To connect to SQL Server running on the same computer

oConn.Open "Provider=sqloledb;" & _ "Data Source=(local);" & _ "Initial Catalog=myDatabaseName;" & _ "User ID=myUsername;" & _ "Password=myPassword" 

To connect to SQL Server running on a remote computer (via an IP address)

oConn.Open "Provider=sqloledb;" & _ "Network Library=DBMSSOCN;" & _ "Data Source=xxx.xxx.xxx.xxx,1433;" & _ "Initial Catalog=myDatabaseName;" & _ "User ID=myUsername;" & _ "Password=myPassword"

Where:
- "Network Library=DBMSSOCN" tells OLE DB to use TCP/IP rather than
   Named Pipes (Q238949)
- xxx.xxx.xxx.xxx is an IP address
- 1433 is the default port number for SQL Server.  Q269882 and Q287932
- You can also add "Encrypt=yes" for encryption 

For more information, see: Microsoft OLE DB Provider for SQL Server

To view Microsoft KB articles related to OLE DB Provider for SQL Server, click here 


The SQLXMLOLEDB provider is an OLE DB provider that exposes the Microsoft SQLXML functionality through ADO. The SQLXMLOLEDB provider is not a rowset provider; it can only execute commands in the "write to an output stream" mode of ADO.  

oConn.Open "Provider=SQLXMLOLEDB.3.0;" & _ "Data Provider=SQLOLEDB;" & _ "Data Source=mySqlServerName;" & _ "Initial Catalog=myDatabaseName;" & _ "User Id=myUserName;" & _ "Password=myUserPassword"

For more information, see:  SQLXML 3.0 and A Survey of Microsoft SQL Server 2000 XML Features

To view Microsoft KB articles related to OLE DB Provider for SQL Server via SQLXMLOLEDB, click here 


oConn.Open "Provider=ASAProv;" & _ "Data source=myASA"

For more information, see:  ASA Programming Interfaces Guide and ASA User's Guide


oConn.Open "Provider=Sybase ASE OLE DB Provider;" & _ "Data source=myASEServer"
' Or
oConn.Open "Provider=Sybase.ASEOLEDBProvider;" & _ "Srvr=myASEServer,5000;" & _ "Catalog=myDBName;" & _ "User Id=myUserName;" & _ "Password=myUserPassword"

Where:
- The Sybase ASE OLE DB provider from the Sybase 12.5 client CD
- 5000 is the port number for Sybase.

Note: The Open Client 12 Sybase OLE DB Provider fails to work without creating  a Data Source .IDS file using the Sybase Data Administrator.  These .IDS files resemble ODBC DSNs.

Note: With Open Client 12.5, the server port number feature finally works, allowing fully qualified network connection strings to be used without defining any .IDS Data Source files.

For more information, see:  Sybase Advance Search   


Actually there is no OLE DB Provider for Text files.  However, you can use the OLE DB Provider for JET to read and write data in Text files.  Or you can use the ODBC Driver for Text.


oConn.Open "Provider=Ardent.UniOLEDB;" & _ "Data source=myServer;" & _ "Location=myDatabase;" & _ "User ID=myUsername;" & _ "Password=myPassword" 

For more information, see: Ardent Using UniOLEDB 5.1Informix Using UniOLEDB 5.2


oConn.Open "Provider=vfpoledb;" & _ "Data Source=C:\vfp7\Samples\Data\myVFPDB.dbc;" & _ "Mode=ReadWrite|Share Deny None;" & _ "Collating Sequence=MACHINE;" & _ "Password=''" 

For more information, see: Microsoft OLE DB Provider for Visual FoxPro

To view Microsoft KB articles related to OLE DB Provider for Visual FoxPro, click here.

Note: The Visual FoxPro OLE DB Provider is NOT installed by MDAC 2.x.  You must install Visual FoxPro 7.0 in order to get it's OLE DB Provider.





Remote Data Service (RDS) Connections

The following examples show how to connect to a remote database using the RDS Data Control. When using the RDS DataControl's Server/Connect / SQL properties, the RDS DataControl uses the RDS DataFactory on the remote server.  If you use the RDS DataControl's URL property, then the RDS DataFactory is not used at all.

WARNING:  The RDS DataFactory can be a major security hole if not setup and configured correctly! For more information, see RDS FAQ #24 

WARNING: RDS is considered obsolete by Microsoft
 

With the RDS default handler disabled

With oRdc .Server = "http://myServerName" .Sql = "Select * From Authors Where State = 'CA'" .Connect = "Provider=sqloledb;" & _ "Data Source=(local);" & _ "Initial Catalog=pubs;" & _ "User Id=myUsername;" & _ "Password=myPassword" .Refresh End With 

With the RDS default handler enabled

With oRdc .Server = "http://myServerName" .Handler = "MSDFMAP.Handler" .Connect = "Data Source=MyConnectTag;" .Sql = "MySQLTag(""CA"")" .Refresh End With

The corresponding CONNECT and SQL sections in the default handler \WINNT\MSDFMAP.INI  file would be:

[connect MyConnectTag] Access = ReadWrite Connect = "Provider=sqloledb; Data Source=(local); Initial Catalog=pubs; User Id=sa; Password="  (put all of this on single line!) [sql MySQLTag] Sql = "Select * From Authors Where State = '?'"

For more information about the RDS Default Handler, see: Q243245, Q230680, and RDS Customization Handler Microsoft articles

To view Microsoft KB articles related to RDS, click here 

To get records from a remote database

With oRdc .URL = "http://myServerName/AuthorsGet.asp?state=CA" .Refresh End With 

To save, set the URL property to an ASP web page

With oRdc .URL = "http://myServerName/AuthorsSave.asp" .SubmitChanges End With
Note: You must use MDAC 2.5 (or greater) for this feature

For more information, see:  RDS URL Property

To view Microsoft KB articles related to RDS, click here 


MS Remote Provider Connections

The following connections strings use Microsoft's remote provider  (MS Remote).  The MS Remote provider tells ADO to communicate  with the remote server (via the RDS DataFactory) and to use the  remote provider that is installed on the remote server.

WARNING:  The RDS DataFactory can be a major security hole if not setup and configured correctly!  For more information, see RDS FAQ #24 

WARNING: RDS is considered obsolete by Microsoft
 

If you want to use an ODBC DSN on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Remote Provider=MSDASQL;" & _ "DSN=AdvWorks;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

If you want to use an OLE DB Provider on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Remote Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath\mydb.mdb", _ "admin", "" 

If you want to use an OLE DB Provider on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Handler=MSDFMAP.Handler;" & _ "Data Source=MyAdvworksConn"

The corresponding entry in the \winnt\Msdfmap.ini file would be:

[connect MyAdvworksConn] Access = ReadWrite Connect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=mydb.mdb; User Id=admin; Password=" (put all of this on single line!)
 

If you want to use an ODBC DSN on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Remote Provider=MSDASQL;" & _ "DSN=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" 

If you want to use an OLE DB Provider on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Remote Provider=SQLOLEDB;" & _ "Data Source=myServerName;" & _ "Initial Catalog=myDatabaseName;" & _ "User ID=myUsername;" & _ "Password=myPassword" 

If you want to use an OLE DB Provider on the remote machine

oConn.Open "Provider=MS Remote;" & _ "Remote Server=http://myServerName;" & _ "Handler=MSDFMAP.Handler;" & _ "Data Source=MyPubsConn" 

The corresponding entry in the \winnt\Msdfmap.ini file would be:

[connect MyPubsConn] Access = ReadWrite Connect = "Provider=SQLOLEDB; Data Source=myServerName; Initial Catalog=myDatabaseName; User ID=myUsername; Password=myPassword" (put all of this on single line!)

For more information, see:  Microsoft OLE DB Remoting Provider   and  Q240838

To view Microsoft KB articles related to MS Remote, click here 
To view Microsoft KB articles related to RDS, click here 



ADO URL Connections

ADO 2.5+ allows you to open up a Recordset based on XML returned from an ASP file over HTTP.  This feature doesn't use RDS at all.

To get records from a remote database

oRs.Open "http://myServer/AuthorsGetByState.asp?state=CA",, _ adOpenStatic, adLockBatchOptimistic

To save changes

' Save Recordset into Stream Set oStm = New ADODB.Stream oRs.Save oStm, adPersistXML ' Use MSXML's XMLHTTP object to open ASP Set oXMLHTTP = New MSXML2.XMLHTTP30 oXMLHTTP.Open "POST", "http://myServerName/AuthorsSave.asp" oXMLHTTP.Send oStm.ReadText ' If an error occurred If oXMLHTTP.Status = 500 Then Debug.Print oXMLHTTP.statusText End If

For more information, see:  ADO Recordset's Open Method




.NET Data Provider Connections

The SQL Server .NET Data Provide allows you to connect to a Microsoft SQL Server 7.0 or 2000 databases.  

For Microsoft SQL Server 6.5 or earlier, use the OLE DB .NET Data Provider with  the "SQL Server OLE DB Provider" (SQLOLEDB).

Note: The SQL Server .NET Data Provider knows which Provider it is.  Hence the "provider=" part of the connection string is not needed.

Using C#:

using System.Data.SqlClient; ... SqlConnection oSQLConn = new SqlConnection(); oSQLConn.ConnectionString = "Data Source=(local);" + "Initial Catalog=mySQLServerDBName;" + "Integrated Security=yes"; oSQLConn.Open(); 

Using VB.NET:

Imports System.Data.SqlClient ... Dim oSQLConn As SqlConnection = New SqlConnection() oSQLConn.ConnectionString = "Data Source=(local);" & _ "Initial Catalog=mySQLServerDBName;" & _ "Integrated Security=yes" oSQLConn.Open() 

If connection to a remote server (via IP address):

oSQLConn.ConnectionString = "Network Library=DBMSSOCN;" & _ "Data Source=xxx.xxx.xxx.xxx,1433;" & _ "Initial Catalog=mySQLServerDBName;" & _ "User ID=myUsername;" & _ "Password=myPassword"

Where:
- "Network Library=DBMSSOCN" tells SqlConnection to use TCP/IP Q238949
- xxx.xxx.xxx.xxx is an IP address.  
- 1433 is the default port number for SQL Server.  Q269882 and Q287932
- You can also add "Encrypt=yes" for encryption 
 

For more information, see:  System.Data.SQL Namespace, Q308656, and .NET Data Providers

Note: Microsoft SQLXML Managed Classes exposes the functionality of SQLXML inside the Microsoft .NET Framework.

To view Microsoft KB articles related to SQLClient, click here 


The OLE DB .NET Data Provider uses native OLE DB through COM interop to enable data access.  

To use the OLE DB .NET Data Provider, you must also use an OLE DB provider (e.g.  SQLOLEDB, MSDAORA, or Microsoft.JET.OLEDB.4.0).

For IBM AS/400 OLE DB Provider

' VB.NET Dim oOleDbConnection As OleDb.OleDbConnection Dim sConnString As String = _ "Provider=IBMDA400.DataSource.1;" & _ "Data source=myAS400DbName;" & _ "User Id=myUsername;" & _ "Password=myPassword" oOleDbConnection = New OleDb.OleDbConnection(sConnString) oOleDbConnection.Open() 

For JET OLE DB Provider

' VB.NET Dim oOleDbConnection As OleDb.OleDbConnection Dim sConnString As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\myPath\myJet.mdb;" & _ "User ID=Admin;" & _ "Password="  oOleDbConnection = New OleDb.OleDbConnection(sConnString) oOleDbConnection.Open() 

For Oracle OLE DB Provider

' VB.NET Dim oOleDbConnection As OleDb.OleDbConnection Dim sConnString As String = _ "Provider=OraOLEDB.Oracle;" & _ "Data Source=MyOracleDB;" & _ "User ID=myUsername;" & _ "Password=myPassword"  oOleDbConnection = New OleDb.OleDbConnection(sConnString) oOleDbConnection.Open() 

For SQL Server OLE DB Provider

' VB.NET Dim oOleDbConnection As OleDb.OleDbConnection Dim sConnString As String = _ "Provider=sqloledb;" & _ "Data Source=myServerName;" & _ "Initial Catalog=myDatabaseName;" & _ "User Id=myUsername;" & _ "Password=myPassword"  oOleDbConnection = New OleDb.OleDbConnection(sConnString) oOleDbConnection.Open() 

For Sybase ASE OLE DB Provider

' VB.NET Dim oOleDbConnection As OleDb.OleDbConnection Dim sConnString As String = _ "Provider=Sybase ASE OLE DB Provider;" & _ "Data Source=MyDataSourceName;" & _ "Server Name=MyServerName;" & _ "Database=MyDatabaseName;" & _ "User ID=myUsername;" & _ "Password=myPassword"  oOleDbConnection = New OleDb.OleDbConnection(sConnString) oOleDbConnection.Open()

For more information, see:  System.Data.OleDb Namespace and .NET Data Providers

To view Microsoft KB articles related to OleDbConnection, click here 


The ODBC .NET Data Provider is an add-on component to the .NET Framework SDK. It provides access to native ODBC drivers the same way the OLE DB .NET Data Provider provides access to native OLE DB providers.

For SQL Server ODBC Driver

' VB.NET Dim oODBCConnection As Odbc.OdbcConnection Dim sConnString As String = _ "Driver={SQL Server};" & _ "Server=MySQLServerName;" & _ "Database=MyDatabaseName;" & _ "Uid=MyUsername;" & _ "Pwd=MyPassword" oODBCConnection = New Odbc.OdbcConnection(sConnString) oODBCConnection.Open() 

For Oracle ODBC Driver

' VB.NET Dim oODBCConnection As Odbc.OdbcConnection Dim sConnString As String = _ "Driver={Microsoft ODBC for Oracle};" & _ "Server=OracleServer.world;" & _ "Uid=myUsername;" & _ "Pwd=myPassword" oODBCConnection = New Odbc.OdbcConnection(sConnString) oODBCConnection.Open() 

For Access (JET) ODBC Driver

' VB.NET Dim oODBCConnection As Odbc.OdbcConnection Dim sConnString As String = _ "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=c:\somepath\mydb.mdb;" & _ "Uid=Admin;" & _ "Pwd=" oODBCConnection = New Odbc.OdbcConnection(sConnString) oODBCConnection.Open() 

For Sybase System 11 ODBC Driver

// C# string myConnStr = "Driver={Sybase System 11};" + "SRVR=mySybaseServerName;" + "DB=myDatabaseName;" + "UID=myUsername;" + "PWD=myPassword"; OdbcConnection myConnection = new OdbcConnection(myConnStr); myConnection.Open(); 

For all other ODBC Drivers

' VB.NET Dim oODBCConnection As Odbc.OdbcConnection Dim sConnString As String = "Dsn=myDsn;" & _                       "Uid=myUsername;" & _ "Pwd=myPassword" oODBCConnection = New Odbc.OdbcConnection(sConnString) oODBCConnection.Open()

For more information, see:  ODBC .Net Data Provider

To view Microsoft KB articles related to OdbcConnection, click here 


The .NET Framework Data Provider for Oracle is an add-on component to the .NET Framework that provides access to an Oracle database using the Oracle Call Interface (OCI) as provided by Oracle Client software.  

Using C#:

using System.Data.OracleClient; OracleConnection oOracleConn = new OracleConnection(); oOracleConn.ConnectionString = "Data Source=Oracle8i;" + "Integrated Security=yes"; oOracleConn.Open(); 

Using VB.NET:

Imports System.Data.OracleClient  Dim oOracleConn As OracleConnection = New OracleConnection() oOracleConn.ConnectionString = "Data Source=Oracle8i;" & _ "Integrated Security=yes"; oOracleConn.Open()

Note: You must have the Oracle 8i Release 3 (8.1.7) Client or later installed in order for this provider to work correctly.

Note: You must have the RTM version of the .NET Framework installed in order for this provider to work correctly.

Note: There are known Oracle 7.3, Oracle 8.0, and Oracle9i client and server problems in this beta release. The server-side issues should be resolved in the final release of the product.  However, Oracle 7.3 client will not be supported.

For more information, see:   .NET Data Provider for Oracle Beta 1

To view Microsoft KB articles related to OracleConnection, click here 


The MySQL .NET Native Provider is an add-on component to the .NET Framework that allows you to access the MySQL database through the native protocol, without going through OLE DB.

Using C#

using EID.MySqlClient; MySqlConnection oMySqlConn = new MySqlConnection(); oMySqlConn.ConnectionString = "Data Source=localhost;" + "Database=mySQLDatabase;" + "User ID=myUsername;" + "Password=myPassword;" + "Command Logging=false"; oMySqlConn.Open(); 

Using VB.NET

Imports EID.MySqlClient  Dim oMySqlConn As MySqlConnection = New MySqlConnection() oMySqlConn.ConnectionString = "Data Source=localhost;" & _ "Database=mySQLDatabase;" & _ "User ID=myUsername;" & _ "Password=myPassword;" & _ "Command Logging=false" oMySqlConn.Open() 

For more information, see:   EID's MySQL ADO.NET native provider

Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total :
Today : Yesterday :