Server IP : 103.119.228.120 / Your IP : 18.225.56.79 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/unixODBC-2.3.1/doc/ProgrammerManual/Tutorial/ |
Upload File : |
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1"> <TITLE>executing a query</TITLE> <link rel="stylesheet" Href="odbc.css"> </HEAD> <BODY bgcolor="white"> <table width="90%" cols="3" border="0"> <TR> <TD colspan="3" class="big">Executing a query</TD> </TR> <TR> <TD colspan="3"><P>If you want to execute a query you will need to specify a handle (<CODE>SQL_HANDLE_STMT</CODE>) for a SQL-statement. In order to get one you have to allocate one with <CODE><A HREF="gloss.html#alloc">SQLAllocHandle</A></CODE>. </P> Then you have to think about the SQL statement you want to execute. As I mentioned in the introduction I assume that we have a table <CODE><A HREF="intro.html#tab">tkeyuser</A></CODE> which contains the following data:</P> <TABLE COLS=3 cellspacing="1" border="0" bgcolor="#eeeeee" cellpadding=2 width="50%"> <TR> <TH class="head">iduser</TH> <TH class="head">dtname</TH> <TH class="head">dtmaxSize</TH> </TR> <TR> <TD>1</TD> <TD>Christa</TD> <TD>10000</TD> </TR> <TR> <TD>2</TD> <TD>Nicole</TD> <TD>9000</TD> </TR> </TABLE> <P> In this example, we want to execute a query which returns all the rows for the fields <CODE>iduser</CODE> and <CODE>dtname</CODE> in this table ordered by <code>iduser</CODE>. So the SQL statement would be:</P> <CODE> SELECT iduser,dtname FROM tkeydata ORDER BY iduser </CODE> <P> If you execute this statement you would get two rows each with two <A HREF="gloss.html#col">columns</A> of data. This data has to be stored somewhere so that your programm can actually use it, so you need to define a variable for each of the columns. So you need to bind a column to variable in your program. Binding a variable automatically stores the data of the column in the variable when you retrieve a result <A HREF="gloss.html#row">row</A> from the connection. It is important that your variables match the <A HREF="gloss.html#dtyp">type</A> of the column in the table within the database.</P> <P> So we need to bin column #1 to a variable of type <CODE>SQLINTEGER</CODE> and the second column to a variable of type <CODE>char</CODE>. This is done by <CODE><A HREF="gloss.html#bind">SQLBindCol</A></CODE>. Therefore we add the variables:</P> <CODE class="list"> SQLHSTMT V_OD_hstmt; <FONT COLOR="blue">// Handle for a statement</FONT><BR> SQLINTEGER V_OD_err,V_OD_id;<BR> char V_OD_buffer[200]; </CODE> <P> Now we can bind the variables:</P> <CODE class="list"><PRE> SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,200,&V_OD_err); SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,sizeof(V_OD_id),&V_OD_err); </PRE> </CODE> <P> Yes you should check for the return code of the function call. I'm to lazy to code it here once again :( </P> Now we can execute the query by calling <A HREF="gloss.html#exec"><CODE>SQLExecDirect</CODE></A>: </P> <CODE class="list"><PRE> V_OD_erg=SQLExecDirect(V_OD_hstmt, "SELECT dtname,iduser FROM tkeyuser order by iduser",SQL_NTS); if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) { printf("Error Select %d\n",V_OD_erg); SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat, &V_OD_err, V_OD_msg,100,&V_OD_mlen); printf("%s (%d)\n",V_OD_msg,V_OD_err); SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); exit(0); } </PRE> </CODE> </TD> </TR> </TABLE> </BODY> </HTML>