关系数据库原理mys.doc_第1页
关系数据库原理mys.doc_第2页
关系数据库原理mys.doc_第3页
关系数据库原理mys.doc_第4页
关系数据库原理mys.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系数据库原理实验1:MySQL的安装和配置MySQL是一种开源的数据库管理系统,其在中小企业级得到广泛使用。然比起Oracle/PostgreSQL等在功能和应用级别上还颇有不如, 但不可否认的是,其功能也变得越来越强大。作为基础课程,我们选用Linux下的MySQL以及 其他一些WEB服务器系统如Apache探讨和实践应用数据库系统的开发,尤其是其在生物信息学数据库方面的应用开发。一、实验目的1. 掌握如何在Linux系统下安装和配置MySQL。2. 初步掌握应用mysql客户端程序访问数据库系统的方法和简单命令。3. 对MySQL数据库的基本结构有所了解和掌握。4. 安装WEB管理系统Apache和WEB开发语言解释器PHP。5. 安装和了解mysql基于WEB的管理工具phpMyAdmin。二、上机实验步骤1. 安装环境【硬件环境】 【操作系统】Redhat Fedora Linux 8.0【安装软件】o MySQL 5.0.41 source packageo Apache source packageo PHP5.2.8 source packageo phpMyAdmin source package2. 安装和配置MySQL(1) 下载源程序安装包(2) 添加mysql组:shell groupadd mysql(3) 添加mysql用户:shell useradd -g mysql mysql(4) 解压、并编译安装MySQL到目标路径shell tar xzvf mysql-VERSION.tar.gzshell cd mysql-VERSIONshell ./configure -prefix=/opt/mysql -without-debug -localstatedir=/opt/mysql/varshell makeshell make installshell cd /opt/mysql (5) 改变目录的owner和group shell cd /opt/mysqlshell chown -R mysql .shell chgrp -R mysql .(6) 初始化数据库,注意看看初始化完成后数据库文件目录有什么样的变化? shell bin/mysql_install_db -user=mysql -basedir=/opt/mysql -datadir=/opt/mysql/varshell chown -R root .shell chown -R mysql var(7) 启动mysql服务端后台 shell bin/mysqld_safe -user=mysql &(8) 安装mysql开机自动启动脚本并拷贝配置脚本到/etc/f shell cp share/mysql/mysql.server /etc/init.d/mysqldshell cp share/mysql/f /etc/fshell chmod +x /etc/init.d/mysqldshell service mysqld restart# 执行下面两行命令的目的是创立连接,为以后的c/c+开发和其他需要使用mysql库的软件安装提供便利。shell ln -s /opt/mysql/lib /usr/lib/mysqlshell ln -s /opt/mysql/include /usr/include/mysql3. 安装和配置Apache/PHP一般来说,我们的系统Fedora8.0已经预先安装了Apache和PHP,我们所要做的工作就是要修改Apache和PHP的配置。如果没有安装,你可以用命令 yum install httpd|php进行网络安装。(1) 修改Apache配置文件/etc/httpd/conf/httpd.conf(标有#的为修改前,下面一行为修改后或者是加入的行) AddType application/x-httpd-php .php .phtml .php3 .incAddType application/x-httpd-php-source .phps (2) 修改/etc/php.ini配置:将register_globals=Off改为register_globals=On即可。(3) 启动Apache:shell service httpd start并打开浏览器访问http:/localhost看看如何。(4) 加入页面/var/www/html/phpinfo.php,看看能否显示: 4. 安装和配置phpMyAdminphpMyAdmin的安装和配置非常简单,只要把phpMyAdmin解压安装到服务器目录并对其目录下的config.inc.php进行编辑后运行setup/即可。 5. mysql客户端应用初步(1) 用mysqladmin为mysql管理员root添加密码 bin/mysqladmin -u root -p password YOUR_PASSWORD (2) mysql客户端登录:shell mysql -h localhost -u root -p(3) 查看初始化后有哪些数据库:mysql show databases;(4) 查看mysql库中有哪些表 mysql use mysql;mysql show tables; (5) 查看这些表的结构(例如user表):mysql describe user;(6) mysql数据库中的表分别有什么样的意义?(7) 学会使用help来帮助你了解某些命令和变量类型等的含义: mysql help;mysql help Contents;mysql help bigint;(8) 初步使用SQL进行简单检索: mysql select * from user;mysql select User, Host, Password from user;三、结论窗体顶端窗体底端四、注意事项实验2:mysql的简单查询 窗体顶端窗体底端实验1我们已经在linux下安装了mysql的数据库管理系统,在课上我们也已经简单介绍了SQL语言的语法,本次上机实验 将由大家来建立数据库和表,并对数据库进行一些简单的查询工作。一、实验目的1. 掌握如何建立数据库Schema。2. 初步掌握创建数据表Table的方法。3. 对MySQL数据库的基本结构有进一步的了解和掌握。4. 掌握如何将数据库中的内容导入和导出的方法。5. 掌握一些简单的SQL查询语句。二、上机实验步骤1. 实验环境【硬件环境】 【操作系统】Redhat Fedora Linux 8.0【软件环境】MySQL 5.0.412. 修改/.bashrc添加/opt/mysql/bin到环境变量PATH,启动mysql服务并进入mysql环境:(1) 确认你的mysql服务已经启动:shell service mysqld restart(2) 进入mysql环境:shell mysql -u root -p并输入密码进入(请记住现在是没有密码的)出现mysql提示符。(3) 为root用户添加密码: mysql use mysql;mysql update user set Password=password(YOUR_PASSWORD) where User=root;mysql flush privileges;mysql quitshell mysql -u root -p3. 创建数据库DOINT(DOmain INTeraction)以及表interaction、GO、pfam和pgmap。数据库说明 数据库DOINT中,表interaction列出了由PDB-entry(3did)和用其他8种通过PFAM进行计算机预测得到的Domain-Domain相互作用。另外PredictionConfidence 表示预测的可信度(HC=high confidence; MC=medium confidence; LC=low confidence; NA=not available),sameGO则反映两种Domain是否 有相同的GO-entry。表pfam列出了所有Domain对应的PFAM id,及其描述和在INTREPRO数据库中对应的id。表GO则列出了GO-entry及其对应的功能分类和具体功能描述。表pgmap则将Domain与GO一一对应。o 创建数据库的方法主要有两种:(1) 利用mysqladmin建立数据库 shell mysqladmin -u root -p create DB_NAME (2) 从mysql环境建立数据库 mysql create database DB_NAME; o 创建上述四个表如文件create.sql,并导入数据(GO.txt, pfam.txt, interaction.txt, pgmap.txt): oo mysql set FOREIGN_KEY_CHECKS = 0;o mysql load data infile pfam.txt into table pfam fields terminated by |;o mysql load data infile GO.txt into table GO fields terminated by |;o mysql load data infile pgmap.txt into table pgmap fields terminated by |;o mysql load data infile interaction.txt into table interaction fields terminated by |;o mysql set FOREIGN_KEY_CHECKS = 1; o 检查看看你的数据库和相应的表是否已经存在。4. 执行SQL查询单表查询A. PF00010对应的GO-entry有哪些?其分别对应的生物学功能描述和功能分类是什么?用多步的方法进行查询。 如果可以的话,你也可以尝试用多表联合查询的方法一步得到结果。B. 在GO表中查找与有丝分裂(mitotic)有关的GO-entry,和与胰岛素(insulin)功能和代谢有关的GO-entry。 哪些Domain具有跨膜(transmembrane)结构?C. GO表中,功能分类为BP(biological_process)的GO-entry有哪些?数目有多少?功能分类为 MF(molecular_function)、CC(cellular_component)的呢?D. interaction表中,是否存在重复的记录?请写出SQL语句并用结果证明。如果有,请把它找出来并删除重复的记录。E. SQL语句select * from interaction where Domain1=PF0008;能否列出所有与PF0008 具有相互作用的Domain?如果不能,你觉得该怎么修改呢?F. 哪些Domain-Domain Interaction具有相同的GO-entry?其中哪些是相同Domain之间的相互作用?G. 数据库中Domain-Domain interaction记录的总数有多少?9种方法(包括8种预测方法)得到的记录数 分别有多少种?这些方法之间的重叠性如何(可用上三角或者下三角矩阵表示)?H. 这些interaction中,除了iPfam和3did外,只有1种预测方法得到的相互作用有多少?2种呢?. 用散点图画出这种趋势。根据你的初步观察,PredictionConfidence是如何通过这些数据来定义的?I. 假设iPfam和3did预测得到的Domain-Domain interaction为所有真实存在的Domain相互作用, 那么其它7种预测方法的敏感性(sensitivity)和特异性(specificity)分别是多少?列表说明之。多表查询o 请找出与PF00003相互作用的Domain相互作用的Domain的列表。 o 列出与每种Domain相互作用的其他Domain的个数(包括本身)并输出到一个文件,并统计相互作用网络中这些 Domain度的分布情况。o 数据库的interaction记录中,有多少interaction的两种Domain都是属于BP功能分类的?有多少 是属于CC的?又有多少是属于MF的?综合以上分析,数据库中两种Domain具有相同功能分类的interaction 的记录的比例是多少?o 列出数据库中所有具有相同GO-entry的Domain(不包括本身)并输出到一个文件。o 建立新表interaction2,其中包含Domain1,Domain2,并将表interaction中的两列以OR的关系合并到一列known, 然后根据是否能用至少一种其他算法预测得到确定一列predictable,interaction表中的PredictionConfidence,最后 是一列sameOntology(Domain1和Domain2是否属于同一种功能分类)。o 列出所有与GO-entry无对应关系的Domain。根据与其相互作用的其他Domain的功能分类,用投票法(majority rule)预测其可能 的生物学功能分类。其他查询P. 为数据库建立一张新表User,包括学号,姓名,性别,出生日期,用户名,密码等信息,将班里面同学的信息输入 其中,设定初始密码,自行练习添加、删除、更新和增减条目等操作。Q. 为用户添加权限等级rank:1-3,1表示用户对数据库具有所有的权限;2表示用户可以浏览数据库;3表示用户无法访问数据库( 本操作是为了后面实验的应用开发准备)。R. 到目前为止,数据库中有哪几个索引(index)?这些索引分别是如何建立的?用ANALYZE语句看看索引是否能为你的不同的 查询检索带来便利。并尝试为你的新表建立索引。S. 你觉得对这个数据库来说,有哪些可能是常常需要进行查询的语句?并为之建立试图(view)。T. 为数据库添加函数,通过用户的出生日期来确定其星座和年龄。U. 增加新表Usermodify,通过触发器的方式储存对User表的添加、删除、更新等操作以及操作发生的时间等信息作为日志记录。V. 为User表添加存储过程,用于添加新的用户记录。 注意:在定义函数、存储过程和触发器的过程中,学会 使用DELIMITER作为开始和结束的标记。三、实验报告完成以上练习,并将实验报告以学号姓名-2.docpdf附件的形式上传发送到相关ricket.wooAT站点,文件名为5070809XXXlab2.pdf。实验报告的内容 应包括实验环境,实验内容和结果讨论。报告提交的截止日期是2010年4月9日。 实验3:Perl/PHP与动态网页开发 由于在接下来的工作中我们需要使用Perl-CGI/PHP连接mysql,本次上机实验我们将主要介绍PERL/PHP语言的基础知识,为 下一次的上机实验做适当的准备,但由于内容较多,希望大家选取PHP或者Perl进行练习。总的来说,作为两种脚本语言,PHP和Perl各有优 势和劣势,当然Perl功能的强大是PHP无法比拟的,但PHP在web开发上的应用更加广泛一些,而perl在我们生物信息学研究尤其是序列分析上 有着得天独厚的优势,有一种说法,“是perl挽救了人类基因组计划”,虽然有些偏颇,但其强大之处可见一斑。一、实验目的1. 掌握应用HTML开发静态网页的方法。2. 熟练掌握perl开发的基础知识,尤其是其在正则表达式和CGI开发上的应用。3. 掌握PHP语言基础和应用PHP开发动态网页的方法。二、上机实验步骤1. 实验环境【硬件环境】 【操作系统】Redhat Fedora Linux 8.0【软件环境】Perl5.8.6? PHP4.0?2. PHP的设置主要由/etc/php.ini决定。3. PHP教程列表PHP手册.chmA. HTML语言基础B. PHP语言基础C. PHP中的数组D. PHP流程控制E. PHP中的面向对象开发4. Perl教程列表推荐用书: o Mastering Perl For Bioinformaticso Beginning Perl For Bioinformaticso Perl手册.chm推荐教程: D. Perl语言基础:变量E. Perl语言基础:语法F. Perl与生物序列分析G. Perl与正则表达式H. PHP中的面向对象开发5. Perl上机实验此部分上机实验内容请参见7/course/bioperl 6. PHP上机实验A. 完成一个静态html页面编写,要求必须有文字、图片、表格、列表等等内容。B. 在网页上以表格的形式显示1-10本身及其平方、立方。C. 根据访问页面时间的不同显示“good morning”,“good afternoon”或者“good evening”。D. 根据用户的输入来确定页面显示的内容。E. 要求写一个函数将一个数组 array(8,2,6,7,1,4,0) 从小到大排列,不能用php内置的排序函数,必须自己写。F. 写一个用户验证的页面,包括对用户名称和密码的验证。G. 写一个函数,尽可能高效的,从一个标准url 里取出文件的扩展名 例如: /abc/de/fg.php?id=1 需要取出php。H. 写一个函数,能够遍历一个路径下的所有文件和文件夹I. 写一个php函数,使能够把从页面输入的数据进行交换,比如a=3,b=7替换成a=7,b=3,要求不使用中间临时变量。J. 请看下面的代码,请你判断其结果是什么,并打开页面进行验证,并说明产生这个结果的原因是什么?K.L. ?phpM. $a = 3;N. $b = 8;O. function inverse($m,$n)P. Q. $m = $m + $n;R. $n = $m - $n;S. $m = $m - $n;T. U. inverse(&$a,$b);V. echo a=.$a;W. echo b=.$b;X. ? Y. 请说说include()、include_once()、require()、require_once() 等几个函数的区别和联系。Z. 请问foo()和foo()有什么不同?三、实验报告完成以上练习,并将实验报告以rar附件的形式发送到ricket.wooAT,文件名为5060809XXXlab3.rar。实验报告的内容 应包括实验环境,实验内容和结果讨论以及PHP源程序代码。报告提交的截止日是2009年5月7日。 实验4:Perl数据库开发Perl在我们生物信息学的应用中,除了序列处理之外,另一个重要的应用领域就是网络数据库开发。本次实验我们 仍然借助前一次建立的数据库DOINT,了解如何应用Perl辅助数据库的开发和应用,尤其是在WEB CGI上的应用。一、实验目的1. 掌握Perl DBI与MySQL连接的方法。2. 掌握Perl执行SQL查询的方法。3. 应用Perl DBI与CGI。二、上机实验步骤1. 实验环境【硬件环境】 【操作系统】Redhat Fedora Linux 8.0【脚本语言】Perl-x.x.x【数据库环境】MySQL 5.0.412. 下载并安装Perl DBI模块(module)和MySQL DBD,安装时必须保证你的MySQL Server是正在运行的:先下载并安装CPAN module,然后用cpan安装DBI:SHELL perl -MCPAN -e install DBI DBD:mysql则用源码安装方式安装:SHELL tar xzvf DBD-mysql-4.011.tar.gzSHELL cd DBD-mysql-x.xxxSHELL perl Makefile.PL -libs=-L/opt/mysql/lib/mysql -lmysqlclient -lz -cflags=-I/opt/mysql/include/mysql -testhost=localhost -testuser=root -testpassword=-mysql_config=/opt/mysql/bin/mysql_configSHELL makeSHELL make install 修改/etc/httpd/conf/httpd.conf,使Apache能支持perl, cgi脚本(加入或者修改以下脚本): LoadModule cgi_module modules/mod_cgi.soScriptAlias /cgi-bin/ /var/www/cgi-bin/AddHandler cgi-script .cgi .pl 用命令“service httpd restart”重启Apache服务后,修改才能起作用。现在你可以用 将你的cgi脚本放入/var/www/cgi-bin目录后,即可http:/localhost/cgi-bin/your_script.cgi执行 你的CGI脚本,例如test.cgi:#!/usr/bin/perluse CGI qw/:standard/; # equivalent to using namespace std;print header, start_html(A simple example), h1(A simple example), start_form, Whats your name?, textfield(name),p, Whats the combination?, p, checkbox_group(-name=cords, -values=Jenie, Jeenie, Jinie, Joe, -defaults=Jenie, Jinie),p, Whats your favorite color?, popup_menu(-name=color, -values=red, green, blue, chartreuse),p, submit, reset, end_form, hr;if (param() my $name = param(name); my $self_url = url(-path_info=1, -query=1); my $keywords = join(/, param(cords); my $color = param(color); print Hello, everyone. My name is , em(escapeHTML($name),p, I have daughters: , em(escapeHTML($keywords),p, And, my favorite color is , em(escapeHTML($color),p, My request: , em(escapeHTML($self_url), hr; exit(0); 3. Perl DBI执行SQL查询的4个步骤A. 调用connect()方法初始化数据库句柄。connect()方法接收连接参数并作为字符串, 包括数据库类型(mysql),主机名(localhost),以及数据库名、数据库用户和 密码等变量。B. 建立SQL查询字符串,并使用do()或者prepare()和execute()方法执行查询语句。 do()方法是针对于一次性的INSERT,UPDATE或者DELETE操作,而prepare()和execute() 针对的则是SELECT查询。使用这些方法得到的对象将有所不同,这取决于查询的类型 以及查询是否成功。成功的查询将返回一个结果对象,而INSERT/UPDATE/DELETE则返 回一些相关的行。而不成功的查询将返回一个错误信息。C. 对于SELECT查询,结果对象将进一步处理提取数据。D. 查询结束后,调用disconnect()方法结束会话。4. Perl执行SQL查询的例子5.6. #!/usr/bin/perl -wT7. # load module8. use DBI;9. # connect10. my $dbh = DBI-connect(DBI:mysql:database=dbname;host=localhost,11. woo, guessme) or die connection failed: . DBI-errstr;12. # execute INSERT query using do()13. my $rows = $dbh-do(INSERT INTO users (id, username, country)14. VALUES (4, jay, CZ);15. print $rows row(s) affected ;16. # execute INSERT query using prepare()17. my $sth = $dbh-prepare(qINSERT INTO users (id, username, country)18. VALUES (?, ?, ?);19. print input the records you want to insert, stop with ENTER:;20. while ($inputdata=) chop $inputdata; last unless($inputdata);21. my ($id, $name, $country) = split(/,/, $inputdata);22. $sth-execute($id, $name, $contry);23. 24. # execute SELECT query25. my $sth = $dbh-prepare(SELECT username, country FROM users);26. $sth-execute();27. # iterate through resultset28. # print values29. while(my $ref = $sth-fetchrow_hashref() print User: $ref-30. ; print Country: $ref- ; print - ;31. 32. # another kind of iteration, resultset as array33. print Usert Countryn;34. while (my data = $sth-fetchrow_array() 35. print $data0t $data1n;36. 37. # clean up38. $dbh-disconnect(); 39. 上机任务A. 参考Mastering Perl for Bioinformatics第六章内容,并完成该章课后练习。B. 以DOINT数据库为例,写一个perl脚本,以pfam ID作为参数,列表显示与该domain相互作用的domain,并将结果输出到 一个目标文件。C. 利用perl CGI写一个页面,根据用户的输入domain id或者名称返回与该domain相互作用的domain列表以及预测信息。三、实验报告完成以上练习,并将实验报告以rar附件的形式发送到ricket.woo AT ,文件名为5060809XXXlab4.rar。实验报告的内容 应包括实验环境,实验内容和结果讨论以及perl源程序。报告提交的截至日期是2009年5月14日。 实验5:C/C+数据库编程上一次实验我们讲述了perl与mysql的连接,这次实验我们将采用C/C+与mysql进行连接,执行查询。 事实上MySQL已经提供了头文件(/opt/mysql/include/mysql/mysql.h),对于程序员来说这大大缩短了开发的过程。一、实验目的1. 掌握C/C+与MySQL连接的方法。2. 掌握C/C+执行SQL查询的方法。二、上机实验步骤1. 实验环境【硬件环境】 【操作系统】Redhat Fedora Linux 8.0【脚本语言】gcc-x.x.x/g+-x.x.x【数据库环境】MySQL 5.0.412. 准备工作首先确定mysql.h及其相应版本的shared object(/opt/mysql/lib/mysql/libmysqlclient.so.x)已经安装,理论上如果 采用源码安装方式安装的MySQL,这两个文件已经存在于你的系统中。最重要的一点,你必须确保你的MySQL Server Daemon正在运行中,首先为你的程序开发新增用户。3. MYSQL采用的数据结构【MYSQL】数据结构是最常用的,因为它是连接MySQL Server的handle,每一个handle代表程序与MySQL Server唯一的 连接,所有insert,select,delete等工作都需要MySQL handle作为参数以识别不同用户、数据库以及程序。【MYSQL_RES】表示的是MySQL Result Set(同Microsoft SQL-Server的Record Set),顾名思义,其包含的是数据库 传递回来的结果,但我们并不会直接读取【MYSQL_RES】的数据,而是使用【MYSQL_ROW】,也即是以行为单位读取数据。4. 连接MySQL Server在程序头上必须加入#include ,让编译器能够找到所有MySQL Client的函数定义,然后使用mysql_init() 准备连接,mysql_init()函数的原型为: MYSQL *mysql_init(MYSQL *mysql) 下面是一个简单的例子:#include #include int main(int argc, char *argv) MYSQL mysql_conn; /* Connection handle */if (mysql_init(&mysql_conn) != NULL) /* the initialization succeeds */. else /* the initialization fails */.return 0; 将上述程序保存为test.c,采用gcc进行编译,在编译时必须指定mysql.h所在路径,并加入-lmysqlclient: gcc test.c -I/opt/mysql/include/mysql -L/opt/mysql/lib/mysql -lmysqlclient -o test 如果是C+程序,则采用g+进行编译,g+的参数与gcc类似。handle被初始化后,就可以使用mysql_real_connect()或者mysql_connect()连接MySQL Server了,这两个 函数的参数包括handle, host, username, password,dbname等: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db,unsigned int port, const char *unix_socket, unsigned long client_flag) 第一个参数是handle,2-4参数分別为host name、user name及password, 第五个参数是db_name,你也可把第五个参数设为NULL,之后使用mysql_select_db()来选择数据库, 第六个参数是MySQL Server的连接池,一般都把它设为MYSQL_PORT(这正是mysql.h和libmysqlclient.so.x要配合的原因), 第七个参数是MySQL Server及client之间传输的渠道(socket或named pipe),但MySQL Server会根据host name建立另一渠道, 除非你有真的需要,否则你需在第七个参数填上NULL。最后是client_flag,包括压缩协议、查询协议、加密协议等。下面是一个简单的例子:#include #include int main(int argc, char *argv) MYSQL mysql_conn /* Connection handle */ if (mysql_init(&mysql_conn) != NULL) if (mysql_real_connect(&mysql_conn, localhost, test, test_pass, sample_db, MYSQL_PORT, NULL, 0) != NULL) (void) printf(GOOD!n); else (void) printf(Connection fails.n); else (void) printf(Initialization fails.n); return -1; mysql_close(&mysql_conn); return 0; 5. 查询数据库当成功连接MySQL Server后,便可以使用mysql_query()或者mysql_real_query()查询数据库。但mysql_query()不能处理 binary data。如果你的查询包含binary data,就必须使用mysql_real_query(),这个函数需要提供该查询字串的长度。mysql_query()的原型如下: int mysql_query(MYSQL *mysql, const char *query) 第一个参数是MySQL连接的handle,第二个参数是查询字串。如果查询成功的话,mysql_query返回0,否则返回非0。如果你的查询语句并没有结果返回,例如DELETE/UPDAE/INSERT等,mysql_query被执行后便完成整个操作了; 如果你要执行INSERT/SHOW/DESCRIBE等,在存取结果前,必须使用mysql_store_result建立Result Handle。mysql_store_result()的原型如下:MYSQL_RES *mysql_store_result(MYSQL *mysql) 例子如下所示:#include #include int main(int argc, char *argv) MYSQL mysql_conn /* Connection handle */ MYSQL_RES *mysql_result; if (mysql_init(&mysql_conn) != NULL) if (mysql_real_connect(&mysql_conn, localhost, test, test_pass, sample_db, MYSQL_PORT, NULL, 0) != NULL) /* Please assume that this query has no error */ mysql_query(&mysql_conn, select * from table1); mysql_result = mysql_store_result(&mysql_conn); /* Free the result to release the heap memory*/ mysql_free_result(mysql_result); else (void) printf(Connection fails.n); else (void) printf(Initialization fails.n); return -1; mysql_close(&mysql_conn); return 0; 请注意mysql_result是一个指针,因为mysql_store_result会自动分配内存存储查询结果, 所以后面需要执行mysql_free_result(MYSQL_RES*)来释放内存。6. 提取查询结果提取结果前必须使用mysql_store_result()分配内存给查询结果,然后再用mysql_fetch_row()逐行提取数据。 结果的行数可以用mysql_num_rows(MYSQL_RES*)传回。mysql_fetch_row()函数的原型如下:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) MYSQL_ROW是一个数组结构,数组中每一个元素依次为该行的column value。下面是一个简单的例子: #include #include #include int main(int argc, char *argv) MYSQL mysql_conn; /* Connection handle */ MYSQL_RES *mysql_result; /* Result handle */ MYSQL_ROW mysql_row; /* Row data */ int f1, f2, num_row, num_col; if (mysql_init(&mysql_conn) != NULL) if (mysql_real_connect(&mysql_conn, localhost, test, testpass, test, MYSQL_PORT, NULL, 0) != NULL)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论