Skip to content

XGCIselect查询语句

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include "xuguci.h"
#define CMD_LEN 2048
int main()
{
    //变量申明
    char username[]="SYSDBA";
    char password[]="SYSDBA";
    XuguCIHANDLE hdenv ; 
    XuguCIHANDLE hdsver  ; 
    XuguCIHANDLE hddbc ;
    XuguCIHANDLE hdstmt ;
    //初始化环境
    int * ver=(int*)malloc(4);
    *(int*)ver = XuguCI_ATTR_ENV_VERSION;

    char* ip_str=strdup("192.168.1.207");
    short* port=(short*)malloc(2);
    *port=5138;
    int * charset=(int*)malloc(4);
    *charset=XuguCI_CHARSET_GBK;
    int* isol=(int*)malloc(4);
    * isol=XuguCI_ISO_READCOMMIT;
    int * ze=(int*)malloc(4);
    *ze=XuguCI_USESSL_FALSE;
    char* db_name=strdup("SYSTEM");
    int* comit =(int*)malloc(4);
    * comit =XuguCI_AUTOCOMMIT_ON;
    int * timout=(int*)malloc(4);
    *timout=60000;
    XuguCIHandleAlloc(NULL,&hdenv,HT_ENV);
    XuguCIHandleAttrSet(hdenv,1,(XuguCIPOINTER)ver,-1);
    XuguCIHandleAlloc(hdenv,&hdsver,HT_SERVER);
    XuguCIHandleAttrSet(hdsver,XuguCI_ATTR_SRV_IP,ip_str,XuguCI_NTS);//ip"192.168.10.81"
    XuguCIHandleAttrSet(hdsver,XuguCI_ATTR_SRV_PORT,(short*)port,XuguCI_NTS);
    XuguCIHandleAttrSet(hdsver, XuguCI_ATTR_SRV_DBNAME,db_name,XuguCI_NTS);//"SYSTEM"
    //建立连接
    XuguCIHandleAlloc(hdsver,&hddbc,HT_SESSION);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_TIMEZONE,"GMT+08:00",XuguCI_NTS);//时区设定
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_ENCRYPTOR,NULL,-1);//磁盘加密,此处不加密
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_CHARSET,(int*)charset,XuguCI_NTS);//设置客户端字符集
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_ISOLEVEL,(int*)isol,XuguCI_NTS);//设置隔离级别
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_SSL,(int*)ze,XuguCI_NTS);//网络加密传输  
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_AUTO_COMMIT,(int*)ver,XuguCI_NTS);//自动提交 XuguCI_AUTOCOMMIT_ON
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_TIMEOUT,(int*)timout,XuguCI_NTS);//会话超时

    int ret= XuguCISessionBegin(hddbc,(char*)username,(char*)password);//建立会话连接
    // body
    char sqlcmd[CMD_LEN];

    char tab_name[]="tab_test";
    int val_id=15; 
    sprintf(sqlcmd,"select * from  %s  where id = %d ; ",tab_name,val_id);
    ret=XuguCIHandleAlloc( hddbc,&hdstmt,HT_STATEMENT );
    ret=XuguCIExecDirect( hdstmt,sqlcmd,XuguCI_NTS);
    if(ret<0)
    {
        char msg[1024]={0};
        char errmessage[512]={0};
        char errcode[7]={0};
        int rlen=0;
        XuguCIErrors( hdstmt,errcode,errmessage,&rlen);
        sprintf(msg,"%s\n insert error number:%s,error message:%s \n",sqlcmd,errcode,errmessage);
        printf(msg);
    }
    int out_id=0;
    int rp,inlen,rp2,inlen2,rp3,inlen3;
    char out_name[50]={0};
    char out_time[30]={0};
    XuguCIDefineByPos(hdstmt,1,&(out_id),4,Xugu_C_INTEGER,&rp,&inlen);
    XuguCIDefineByPos(hdstmt,2,out_name,50,Xugu_C_CHAR,&rp2,&inlen2);
    XuguCIDefineByPos(hdstmt,3,out_time,30,Xugu_C_CHAR,&rp3,&inlen3);
    char rec_buff[200]={0};
    int i=0;
    ret= XuguCIFetch(hdstmt);
    while(ret!=XuguCI_ERROR && ret!=XuguCI_NO_DATA )
    {    
        memset(rec_buff,0x0,200);
        i++;
        sprintf(rec_buff,"record %d value: id= %d name = %s getime= %s \n",i,out_id,out_name,out_time);
        printf(rec_buff);
        ret= XuguCIFetch(hdstmt);
    }
    XuguCIFreeStmt( hdstmt,Xugu_RESET);//下面还有调用则重置stmt, 否则释放

    XuguCIHandleFree( hdstmt);
    // end body 

    //完成调用后关闭连接:
    ret=  XuguCISessionEnd(hddbc);
    //释放连接以及环境
    XuguCIHandleFree(hddbc);
    XuguCIHandleFree(hdsver); //HT_SERVER
    XuguCIHandleFree(hdenv);//HT_ENV
    return 0;
}