📄 5.html
字号:
short *Z;<br>};<p>该结构的成员函数在动态SQL方法四中发挥着重要的作用,故在这里进行较详尽的介绍:<p> ·变量N:<p>变量N用于指定查询列表项或占位符的最大个数。在执行DESCRIBE命令前,必须将变量N设置为查询列表项或占位符的最大个数;在执行了DESCRIBE命令后,还必须将变量N设置为存储在变量F中的实际变量数。<p> ·变量V:<p>变量V是指向数据缓冲区地址数组的指针,该数据缓冲区用于存储查询列表项或绑定变量的值。当分配描述区时,函数sqlald()会将V[0]到V[N-1]设置为0。该函数语法如下:<p>descriptor_name=sqlald(max_vars,max_name,max_ind_name);<p>参数说明如下:<p> ·max_vars:查询列表项或占位符的最大个数。<p> ·max_name:查询列表项名称或占位符名称的最大长度。<p> ·max_ind_name:占位符指示变量名称的最大长度。<p>函数sqlald()只用于非线程应用。而如果要在线程应用中完成同样的功能,则需要使用函数sqlaldt()。另外,也可以使用SQLLIB的新函数SQLSQLDAAlloc(),该函数既可用于线程应用,又可用于非线程应用。<p>对于查询描述区来说,在执行FETCH命令前必须为变量V分配内存。语句EXEC SQL FETCH…USINGDESCRIPTOR…将查询列表数据存储到了由V[0]到V[N-1]所指向的数据缓冲区中。其中,第i个值存储在V[i-1]所指向的数据缓冲区中。<p>对于绑定描述区来说,在执行OPEN命令前必须为变量V分配内存。语句EXEC SQL OPEN…USINGDESCRIPTOR…将使用由V[0]到V[N-1]所指向的绑定变量值来执行动态SQL语句。其中,第i个绑定变量的值存储在V[i-1]所指向的数据缓冲区中。<p> ·变量L:<p>变量L是指向存储在数据缓冲区中的查询列表值或绑定变量值的长度数组的指针。<p>对于查询描述区来说,DESCRIBESELECT LIST命令会将长度数组设置为每个查询列表项的最大长度。各种数据类型的长度是各不相同的。对于CHAR或VARCHAR2类型的查询列表项来说,DESCRIBE SELECT LIST将L[i]设置为查询列表项的最大长度;而对于NUMBER类型的查询列表项来说,分别被保存到了,通过调用函数sqlpre()可以从L[i]中读取到精度和标度值。函数sqlpre()的语法如下:<p>sqlpre(long*length,int*precision,int*scale);<p>该函数的原型在sqlcpr.h文件中。参数说明如下:<p> ·length:指向存储NUMBER值长度的长整数变量的指针。对于变量L来说,长度被存储到L[i]中,而精度和标度分别存储在该变量的低字节和高字节中。<p> ·precision:指向整数变量的指针,NUMBER值的精度返回到该变量中。<p> ·scale: 指向整数变量的指针,NUMBER值的标度返回到该变量中。<p>该函数只能用于非线程应用。而如果要在线程应用中完成同样功能,则需要使用函数sqlprct()。另外,也可以使用SQLLIB的新函数SQLNumberProV6(),该函数既可用于线程应用又可用于非线程应用。<p>在执行FETCH命令前,还必须设置L[i]。例如,当将NUMBER值转换为char类型时,应该将L[i]设置为精度加二(也即数字位数+符号位+小数点);而当将NUMBER值转换为float类型时,应该将L[i]设置为浮点数的长度。<p>对于绑定描述区来说,在执行OPEN命令前必须设置变量L。例如,我们可以通过使用函数strlen()获得绑定变量字符串的长度,尔后将变量L设置为该长度值。<p> ·变量T:<p>变量T是指向查询列表值或绑定变量值的数据类型代码数组的指针,这些数组类型代码确定了如何进行数据类型转换。<p>下面列出了Oracle内部数据类型所对应的代码:<p>Oracle内部数据类型 数据类型代码<p>VARCHAR2 1<br>NUMBER 2<br>LONG 8<br>ROWID 11<br>DATE 12<br>RAW 23<br>LONG ROW 24<br>CHARTER(或VHAR) 96<br>MISLABLE 106<p>下面列出了Oracle外部数据类型所对应的代码以及C数据类型:<p><br>Oracle内部数据类型 数据类型代码 C数据类型<br>VARCHAR2 1 char[n]<br>NUMBER 2 char[n](n 22)<br>INTEGER 3 int<br>FLOAT 4 float<br>STRING 5 Float char[n+1]<br>VARNUM 6 char[n](n 22)<br>DECIMAL 7 float<br>LONG 8 char[n]<br>VARCHAR 9 char[n+2]<br>ROWID 11 char[n]<br>DATE 12 char[n]<br>VARRAW 15 char[n]<br>RAW 23 unsigned Char[n]<br>LONG RAW 24 unsigned Char[n]<br>UNSIGNED 68 unsigned int<br>DISPLAY 91 char[n]<br>LONG VARCHAR 94 char[n+4]<br>LONG VARRAW 95 unsigned char[n+4]<br>CHARTER(或VHAR) 96 char[n]<br>MISLABLE 106 char[n]<p>对于查询描述区来说,DESCRIBESELECT LIST 命令将Oracle内部数据类型所对应的代码返回到了数据类型代码数组中。在使用FETCH命令检索数据时,Oracle会自动在内部和外部数据类型间进行转换,但对于有些数据类型在执行FETCH命令前就需要进行数据类型转换。对于字符数据来说,比较容易处理,但是有些类型的数据处理起来可能比较困难,此时就需要重新设置T的元素了。例如,将NUMBER的值重置为FLOAT或INT。<p>T[i]的高位存储着第i个查询列表项的NULL\NOTNULL状态信息。在执行OPEN或FETCH命令前必须清除该位,这可以通过调用函数sqlnul()来完成。函数sqlnul()的语法如下:<p>Sqlnul(unsigned short *value_type,unsigned short *type_code,int*null_status);<p>参数说明如下:<p> ·values_type:指向无符号短整数变量的指针,该变量存储着查询列表项的数据代码类型,而数据类型存储在T[i]中。<p> ·type_code:指向无符号短整数变量的指针,该变量返回了查询列表项的数据类型代码。<p> ·null_status:指向整数变量的指针,该变量返回了查询列表项的NULL\NOT NULL状态。其中,1表示允许该列为空,而0表示不允许该列为空。<p>对于绑定描述区来说,DESCRIBEBIND VARIABLES命令将数据类型代码数组设置为0。在执行OPEN命令前必须设置存储在每个元素中的数据类型代码,该代码表示了V[i]所指向的数据缓冲区中数据的外部存储类型。一般情况下,绑定变量值都被存储在字符串中,所以数据类型数组元素均被设置为1(VARCHAR2的数据类型代码),当然也可使用数据类型代码5(STRING)。<p> ·变量I:<p>变量I是指向数据缓冲区地址数组的指针,在该数据缓冲区中存储着指示变量值。<p>对于查询描述区来说,在执行FETCH命令前。当执行EXEC SQL FETCH…USINGDESCRIPTOR…语句时,如果第i个查询列表值为NULL,那么I[i]所指向的指示变量值被设置为-1,否则被置为0(表示值为NOT NULL)或正整数(表示值被截断)。<p>对于绑定描述区来说,在执行命令前必须为变量I分配内存。当执行EXECSQL OPEN…USING DESCRIPTOR…语句时,I[i]所指向的数据缓冲区可以确定第i个绑定变量是否有NULL值。如果变量值为-1,则相应的绑定变量值为NULL。<p> ·变量F:<p>变量F是执行了DESCRIBE命令所找到的查询列表项或占位符的实际位数。如果变量F的值小于0,则表示找到的查询列表项或占位符个数太多,超出了描述区尺寸。<p> ·变量S:<p>变量S是指向数据缓冲区地址数组的指针,在该数据缓冲区中存储着查询列表项或占位符的名称。<p>在执行了DESCRIBE命令后,第i个查询列表项或占位符的名称被保存到S[i-1]所指向的数据缓冲区中。<p> ·变量C:<p>变量C是指向数组的指针,该数组保存着查询列表项或占位符名称的当前长度。<p>在执行了DESCRIBE命令后,元素C[0]到C[N-1]被设置为每个查询列表项或占位符名称的实际字符个数。<p>在SQLDA中还有其它几个变量,包括变量M、变量X、变量Y、变量Z,因其作用在程序中相对次要,这里不作介绍。<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I230" ID="I230"></A><center><b><font size=+2>编译和链接</font></b></center><br>在系统特定的Oracle文件内具有关于如何编译和链接Pro*C/C++应用程序的指令,在UNIX系统中有一个make文件,在demo目录中称为proc.mk。执行此程序即可方便地完成如下两项功能:<p> ·将内嵌SQL和PL/SQL转换为对Oracle运行库的调用,同时生成转换后的C或C ++源代码。<p> ·经过编译和链接生成可执行程序。<p>执行编译和链接时在UNIX命令行中输入命令:<p>make –f proc.mk [源程序名]<p>即可将后缀为.pc的源文件编译为后缀为.exe的可执行文件。<p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I146" ID="I146"></A><center><b><font size=+2>MYSQL</font></b></center><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I147" ID="I147"></A><center><b><font size=+2>安装</font></b></center><br> 一、软件获取<br> apache_1.3.6.tar.gzphp-3.0.8.tar.gzmysql-3.22.21-pc-linux-gnu-i686.<br>tar.gzphpMyAdmin_2.0.1.tar.gz 从http://www.htmlwizard.net/phpMyAdmin/取<br>得注意:以上均为源代码而非RPM包<p> 二、软件安装<br> 以root登录,将以上文件均拷贝至/root下1.安装MySQL<br> #tar -zvxf mysql-3.22.21-pc-linux-gnu-i686.tar.gz 产生mysql-3.22.<br>21-pc-linux-gnu-i686目录#mv mysql-3.22.21-pc-linux-gnu-i686<br>/usr/local/mysql 移到/usr/local/mysql#cd /usr/local/mysql#./configure<br>--prefix=/usr/local/mysql#cdMySQL安装完毕(我下载的是bin包)<br> 2.安装Apache及php3<br> #tar xvzf apache_1.3.6.tar.gz 产生apache_1.3.6目录#tar xvzf php-3.<br>0.8.tar.gz 产生php-3.0.8目录#cd apache_1.3.6#./configure<br>--prefix=/usr/local/apache 把Apache的安装目录定为/usr/local/apache#cd .<br>./php-3.0.8#./configure --with-mysql=/usr/local/mysql --with-apache=..<br>/apache_1.3.6 --enable-track-vars<br> 配置支持MySQL、作为Apache功能模块、跟踪变量有效#make; make<br>installPHP安装完毕#cd ../apache_1.3.6#./configure<br>--prefix=/usr/local/apache --activate-module=src/modules/php3/libphp3.<br>a#make; make installAPACHE安装完毕#cd ../php-3.0.8#cp php3.ini-dist<br>/usr/local/lib/php3.ini 把php.ini文件拷到/usr/local/lib/目录下.#cd<br>/usr/local/apache/conf#vi httpd.conf找到AddType application/x-httpd-php3<br> .php3把它前头的#号给删了当然也可加一行AddType<br>application/x-httpd-php3 .asp这样用FrontPage编辑会方便一点3.安装<br>phpMyAdminL<br> #cd#tar -zvxf phpMyAdmin_2.0.1.tar.gz 产生phpMyAdmin-2.0.1目录#mv<br>phpMyAdmin_2.0.1 /usr/local/apache/htdocs/phpMyAdmin 移到<br>/usr/local/mysql#cd /usr/local/apache/htdocs/phpMyAdmin#chmod a+r * 置为<br>可读<p> 三、软件运行<br> 启动MySQL#cd /usr/local/mysql/#bin/safe_mysqld &测试:<br> #bin/mysql -u root 默认没有设口令mysql>use mysql 打开mysql数据库<br>mysql>select * from user; 从表user中读数据,别忘加;号mysql>exit这样就算<br>可以了,先不急着加口令<br> 启动Apache/usr/local/apache/bin/apachectl start测试:<br> #telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape<br> character is '^]'.HEAD / HTTP /1.1 输入并加两次回车<br> HTTP/1.1 200 OKDate: Wed, 23 Jun 1999 02:51:27 GMTServer: Apache/1.<br>3.6 (Unix) PHP/3.0.8Last-Modified: Wed, 20 May 1998 14:59:42 GMTETag:<br>"2e341-656-3562efde"Accept-Ranges: bytesContent-Length: 1622Connection:<br> closeContent-Type: text/htmlX-Pad: avoid browser bug<br> Connection closed by foreign host<br> 再用浏览器测试一下吧#cd /usr/local/apache/htdocs#vi test.php3在文件<br>里敲入:<br> 并存盘退出再用浏览器看一下这个文件,是不是一大串信息出来了?<br> 使用phpMyAdmin用浏览器打开/phpMyAdmin/index.php3 注意大小写<p> 四、MySQL及phpMyAdmin的使用<br> 1.MySQL的用户及口令设置<br> #cd /usr/local/mysql#bin/mysqladmin -u root password '新口令<br>'#bin/mysql -u root -pEnter password: 输入口令mysql>use<br>mysqlmysql>update user set select_priv='y'; 使任何人均可读数据库<br>mysql>flush privileges; 使设置有效mysql>exit其它设置请参见相关文档<br> 2.phpMyAdmin设置<br> 设置口令后,phpMyAdmin也要作相关设置:<br> #cd /usr/local/apache/htdocs/phpMyAdmin#vi config.inc.php3将第8行改<br>为$cfgServers[1]['adv_auth'] = true; //这样会问用户名和口令将第47行改为<br>$cfgMysqladmin = "/usr/local/mysql/bin/mysqladmin"; //用于重新启动MySQL<br>将第59行改为require("chinese_gb.inc.php3"); //简体中文显示存盘退出用浏览<br>器打开/phpMyAdmin/index.php3 注意大小写<br> 这下好了,都是亲切的中文提示....<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I148" ID="I148"></A><center><b><font size=+2>apache+php3+mysql</font></b></center><br>================================================================================<br>*安装apache-devel rpm包.<br>*安装MySQL相关的包.<br> rpm -ivh MySQL-3.22.25-1.i386.rpm<br> rpm -ivh MySQL-client-3.22.25-1.i386.rpm<br> rpm -ivh MySQL-devel-3.22.25-1.i386.rpm<br>*下载php3源文件php-3.0.tar.gz<br>*解开源文件<br> tar xzvf php-3.0.tar.gz<br>*进入php-3.0源文件目录<br> ./configure --with-mysql=/usr --with-apxs=/usr/sbin/apxs --with-config-file<br>-path=/etc/httpd (还有其他选项,可以运行 ./configure --help 看看)<br>*建一个modules目录<br> mkdir modules<br>*进入regex目录<br> 运行 make r (这一步可能不必要)<br> 运行 make lib<br>*退回上一级目录<br> 运行 make install<br>* cp modules/libphp3.so /etc/httpd/modules/<br>* cp php3.ini-dist /etc/httpd/php3.ini<br>* 修改/etc/httpd/conf/httpd.conf 加入<br> LoadModule php3_module modules/libphp3.so<br> AddModule mod_php3.c<br> 修改/etc/httpd/conf/srm.conf 加入<br> AddType application/x-http-php3 .php3<br>*重起apache<br> /etc/rc.d/init.d/httpd restart<br>*测试<br> 查看mysqld是否已经运行.如果没有,先运行mysqld<br> 将php3源文件下tests目录下的mysql文件拷贝到 /home/httpd/html目录下<br> lynx localhost/mysql.php3<p> 如果有问题,可以将mysql.php3中的127.0.0.1改为localhost<p><br><center><A HREF="#Content">[目录]</A></center><p><hr><p><center>[ 本文件由<a href="http://cee.delphibbs.com">良友·收藏家</a>自动生成 ]</center></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -