2015-03-11 6 views
1

Привет всем, Я новичок в языке C, я подключен к базе данных с помощью OCILIB, и я нашел эту программу по сети.Подключение к базе данных с использованием OCILIB

#include "ocilib.h" 
#include <conio.h> 

/* Example on Microsoft platform */ 

static HANDLE evt; 

void long_oracle_call(void *data) 
{ 
OCI_Statement *st = OCI_StatementCreate((OCI_Connection *) data); 
OCI_Resultset *rs; 

/* execute a query that takes a long time to process */ 

OCI_ExecuteStmt(st, "select * from employees2"); 

rs = OCI_GetResultset(st); 

while (OCI_FetchNext(rs)) 
{ 
    printf("%i - %s", OCI_GetInt(rs, 1), OCI_GetString(rs, 2)); 
} 

SetEvent(evt); 
} 


int main(void) 
{ 
OCI_Connection *cn; 

if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT)) 
    return EXIT_FAILURE; 

    cn = OCI_ConnectionCreate("localhost:1522/infodba", "system", "infodba",  OCI_SESSION_DEFAULT); 
evt = CreateEvent(0, TRUE, FALSE, 0); 

_beginthread(long_oracle_call, 0, cn); 

    if (WaitForSingleObject(evt, 10000) != WAIT_OBJECT_0) 
    { 
    OCI_Break(cn); 
    Sleep(2000); 
    } 

    OCI_Cleanup(); 
    getch(); 

    return EXIT_SUCCESS; 
} 

IT работает отлично, но я хочу, выход этой программы в массив в аренду, а не ниже линии

printf("%i - %s", OCI_GetInt(rs, 1), OCI_GetString(rs, 2)); 

Я пытался сделать это, тест [1] = OCI_GetString (rs, 2);

Но это дает мне сообщение об ошибке, как

ERROR: A value of type "const text*" cannot be assigned to an entity of type "char". 

Кто-нибудь, пожалуйста, помогите мне.

ответ

0

Вы не можете присвоить строки к char[] arrary использования =#. Вы имеете сделать как

strcpy(test, OCI_GetString(rs, 2)); 

предполагая, text достаточная длина char массива.

# Другие, чем время инициализации

+0

Thnx много это работает – Jagdish

+0

@Jagdish и вы радушны. :-) –

Смежные вопросы