참고 : http://www.freetds.org/userguide/
7.0,8.0,4.2 의 차이는 속도면에서 매우 큰 차이를 보인다고 한다.
그런데 4.2가 제일 느리지만 문제가 제일 적은것 같다.
사용처에 따라 다르게 사용을 해야 할것으로 생각된다.
출처 : http://blog.empas.com/kim0mo/read.html?a=2515392&c=244539
<<<<<<<<<<<<<freetds.conf Setting>>>>>>>>>>>>>>>>
/usr/local/freetds/
에 설치 ?다면
vi /usr/local/freetds/etc/freetds.conf
freetds.conf를 수정한다.
[AploDBSrv]
host = [IP]// ODBC서버의 IP를 설정한다.
port = [PORT]// ODBC서버의 PORT를 설정한다.
추가 (서버이름 : AploDBSrv)
<<<<<<<<<<<<<<<Source>>>>>>>>>>>>>>>.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include <sybfront.h>
#include <sybdb.h>
#include <dblib.h>
int db_test();
static int syb_msg_handler(DBPROCESS *dbproc,DBINT msgno,int msgstate,int severity,char *msgtext,char *srvname,char *procname,int line)
{
// ------- msg 출력 routine를 작성한다 -----------
printf("syb_msg_handler [%s]\n", msgtext);
return 0;
}
static int syb_err_handler(DBPROCESS *dbproc,int severity,int dberr,int oserr,char *dberrstr,char *oserrstr)
{
//------- err msg 출력 routine를 작성한다 -----------
printf("syb_err_handler1 [%s]\n", dberrstr);
//return 0;
}
int main(int argc, char *argv[])
{
db_test();
printf("end...\n");
return 0;
}
int db_test()
{
printf("FreeTDS(유닉스에서 MS-SQL연결 테스트) ver 0.2. by k0mo\n\n");
LOGINREC *login; /* login information */
DBPROCESS *dbproc;
DBINT ageint;
// 혹시라도 SYBASE 환경변수를 인식을 못하는 경우가 있다면, 아래와 같이
// 써주세요. SYBASE환경변수 인식을 못하면 데이터를 못가져오거나
// 이상하게 가져오지요.
// .bashrc 나 .profile 등에 제대로 설정해놓았으면 문제는 없습니다만..
putenv("SYBASE=/usr/local/freetds");
putenv("TDSVER=42");
// 한글입력,갱신이 있을 경우는 버전을 4.2로 해주세요.
// 7.0은 한글처리가 안됩니다.
// putenv("TDSVER=70"); --> putenv("TDSVER=42");
dbinit(); /* db-lib를 초기화한다 */
// err-msg,msg handler를 등록. common.c 에 있는 함수.
// 에러메시지 안봐도 알게될 정도가 되면 아래 두 줄 막으시구요.
//dberrhandle( syb_err_handler );
dbmsghandle( syb_msg_handler );
login = dblogin(); // login record를 가져온다
DBSETLUSER(login,"degitalcline"); /* login id set */
DBSETLPWD(login,"degitalcline"); /* login pass word set */
// 아래 두줄은 안써도 상관 없음
DBSETLAPP(login,"APLO_SRV"); //SQL server쪽에 넘겨줄 어플리케이션명
DBSETLHOST(login,"CYBER-R"); //SQL server쪽에 넘겨줄 호스트명
dbsetlogintime(10);// connection timeout
dbproc = dbopen(login,"AploDBSrv");
dbsettime(10);// query timeout
printf("Connect ok!\n\n");
#if 0
// INSERT TEST
dbcmd(dbproc, "insert into Cust_Propos_T_TMP(Cust_Jumin_NO, Cust_Name) values('7205111011233','바보')");
dbsqlexec(dbproc);
#endif
// SELECT TEST
// RETCODE가 0이면 에러
RETCODE ret = dbcmd(dbproc, "select Cust_ProPos_NO,Cust_Jumin_NO,Cust_Name from Cust_Propos_T_TMP");
if(ret == 0) printf("error\n");
ret = dbsqlexec(dbproc);
if(ret == 0) printf("error\n");
dbresults(dbproc);
char no[10], jumin_no[14], name[21];
int cust_propos_no;
//dbbind(dbproc, 1, INTBIND, 0, (BYTE *)&cust_propos_no);
dbbind(dbproc, 1, STRINGBIND, 0, (BYTE *)no);
dbbind(dbproc, 2, STRINGBIND, 0, (BYTE *)jumin_no);
dbbind(dbproc, 3, STRINGBIND, 0, (BYTE *)name);
while(dbnextrow(dbproc) != NO_MORE_ROWS) {
printf("Result : cust_propos_no [%s] jumin_no[%s] name[%s]\n", no, jumin_no, name);
}
dbclose(dbproc);
dbexit();
return 0;
}
'UNIX_LINUX_C_C++' 카테고리의 다른 글
bind error : Address already in use (0) | 2011.10.16 |
---|---|
CC 및 GCC 컴파일러 설치와 환경 설정 (0) | 2011.10.16 |
make예제 (0) | 2011.10.16 |
gcc 컴파일시 malloc() 함수 warning (0) | 2011.10.16 |
token 함수를 만들어서 사용해보자 (0) | 2011.10.16 |