




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈 MYSQL数据库数据读取类说明一、 功能:只能用于数据库中数据读取。二、 使用:1、 有两个类mysql_class和stmt_class。如果我们需要对读出的数据做一些运算,则应使用stmt_class类;如果我们仅仅要将数据读出并显示出来,则使用mysql_class更方便。2、 mysql_class类功能及使用流程:读出的数据首先存入本地,然后以“行”为单位输出。所有类型的数据在输出时均已被转化为字符串的格式(如图1,以一个例子来说明)。+ SELLECT * FORM staff(调用了Execute执行查询)执行GetRow(1);执行GetField(2);输出一个string对象,“1991-4-2”(改域在数据库中是DATATIME类型)图1 天蓝色框,为该类(和stmt_class类相比)的特殊操作数据库的表(staff)number(int)name(varchar)birthday(date_time)1zhang1990-3-12wang1991-4-23li1992-5-2行、列标号起始为“0”初始化类对象调用Connect连接服务器第1行第2列3、 stmt_class类的功能及使用流程:读出数据到您定义的变量中,保持原始的数据类型。在获得数据前,您需要调用Bind函数,把程序中定义的数据和数据库对象绑定。以后,每执行一次GetRow操作,可将查询结果中的一行的所有域,存入对应的变量中(如图2,以一个例子来说明)。数据库的表(staff)number(int)name(varchar)birthday(date_time)1zhang1990-3-12wang1991-4-23li1992-5-2MYSQL 语句:SELLECT number,name FORM staff调用Execute()执行查询执行GetRow(1);此时,第一行中的域number,name分别被存入number和var_name中。第1行第2列行标号起始为“0”图2天蓝色框,为该类(和mysql_class类相比)的特殊操作SetBindNum(2);首先,定义相关类型变量,以存储从数据库获得的数据:int number;char buf_name20;SetBind(0,(void *)&number);SetBind(1,(void *)&buf_name0);执行Bind();执行GetRow(1);执行绑定操作,变量绑定结果集注册要绑定的变量设置绑定的变量个数(这里是2)初始化类对象调用Connect连接服务器注:浅色部分,并非完成一次查询所必需的操作,可以忽略。三、 mysql_class类中函数说明:1、构造函数:mysql_class();原型:mysql_class(string host,string user,string passwd,string db=);参数:host数据库服务器IP地址user登陆服务器的用户名passwd密码sb要访问的数据库的名字返回值:无。说明:db可以不指定,而在连接之后调用SelectDB函数指定.2、函数bool Connect()原型:bool Connect(void);参数:无。返回值:若连接成功,返回true;失败,返回false。3、函数: bool SelectDB();原型:bool SelectDB(string db);功能:选择从哪个数据库中读数据。参数:db数据库名字返回值:成功,返回true;失败,返回false。说明:必须在连接数据库之后调用,这个过程也可在构造函数中完成。4、函数:void SetQuery();原型:void SetQuery(string query);功能:设置要执行的查询语句。参数:queryMYSQL语句返回值:成功,返回true;失败,返回false。说明:也可以在执行Execute是指定。5、函数:bool Execute();原型:bool Execute(string query =);功能:执行查询语句,返回结果集。参数:query待执行的MYSQL语句返回值:成功,返回true;失败,返回false。说明:如果参数取默认值,则执行由SetQuery()函数指定的MYSQL语句。6、函数:unsigned long Num_Rows();原型:unsigned long Num_Rows(void);功能:返回结果集中有多少行数据。参数:无。返回值:返回结果集中行数。说明:该函数的执行必须在已经后的结果集之后,即:执行Execute()后。7、函数:bool GetRow();原型:bool GetRow(my_ulonglong row=NEXT_ROW);功能:获得一行数据,存入缓冲区。参数:row获得第几行数据返回值:成功,返回true;失败,返回false。说明:如果参数取默认值,则读出下一行数据。8、函数:string GetField();原型:string GetField(unsigned int n);功能:从以保存的行中,读出其中一个域的值。参数:n域的编号返回值:以格式化字符串的形式,返回该域的值。说明:如果错误或该域是空值,都会返回空字符串;因此,应定要再GetRow()函数成功调用之后调用该函数。9、函数:void Free_Result();原型:void Free_Result(void);功能:释放结果集占用的内存空间。参数:无。返回值:无。说明:该函数会在您再次执行查询自动调用,您可以不执行该操作。10、函数:void Close();原型:void Close(void);功能:关闭连接。参数:无。返回值:无。说明:在重新连接或对象析够时,该函数都会被自动调用,您可以不执行该操作;如果您读取数据后,不需要使用数据库了,也可以执行该操作。注:浅色部分,并非完成一次查询所必需的操作,可以忽略。四、 stmt_class类中函数说明:1、构造函数:stmt_class();原型:stmt_class(string host,string user,string passwd,string db=);参数:host数据库服务器IP地址user登陆服务器的用户名passwd密码sb要访问的数据库的名字返回值:无。说明:db可以不指定,而在连接之后调用SelectDB函数指定.2、函数bool Connect()原型:bool Connect(void);参数:无。返回值:若连接成功,返回true;失败,返回false。3、函数: bool SelectDB();原型:bool SelectDB(string db);功能:选择从哪个数据库中读数据。参数:db数据库名字返回值:成功,返回true;失败,返回false。说明:必须在连接数据库之后调用,这个过程也可在构造函数中完成。4、函数:void SetQuery();原型:void SetQuery(string query);功能:设置要执行的查询语句。参数:queryMYSQL语句返回值:成功,返回true;失败,返回false。说明:也可以在执行Execute是指定。5、函数:bool Execute();原型:bool Execute(string query =);功能:执行查询语句,返回结果集。参数:query待执行的MYSQL语句返回值:成功,返回true;失败,返回false。说明:如果参数取默认值,则执行由SetQuery()函数指定的MYSQL语句。6、函数:void SetBindNum();原型:void SetBindNum(unsigned int num);功能:设置您要读取多少列数据。参数:num列数返回值:无。说明:在执行SetBind前必须执行该函数。7、函数:bool SetBind();原型:bool SetBind(unsigned int n,enum enum_field_types ft,void *buffer,unsigned long *length=NULL,my_bool *is_null=NULL,unsigned long buffer_length=0);功能:注册变量。参数:n这是您注册的第几个变量 ft数据库中对应的数据类型buffer您定义的变量的地址length返回数据项的实际长度(用于varchar,blob等类型数据时,很有用,也可以不使用)is_null返回数据项是否为空值(可以不使用)。buffer_lengthbuffer的长度(单位:BYTE ,也可以不指定,但要保证buffer足够大)返回值:成功,返回true;失败,返回false。说明:a) n取值在0到 您调用SetBindNum()时设定的值-1之间,注册buffer的顺序要与查询语句SELECT的列相同,例如:要执行的查询语句是:SELECT number,name FROM staff您定义了变量(两个):int num ;char str_name20;则您应执行:SetBindNum(2);并相应调用:SetBind(0,MYSQL_TYPE_LONG,&num);SetBind(1,MYSQL_TPYE_STRING , str_name);这样您就完成的变量的注册。b)关于类型匹配的说明:很容易理解,我们定义了一些用来接收查询结果的变量,这些变量的类型应当与数据库中的对应项的类型相匹配,下表是对应关系:enum enum_field_types值SQL类型C类型MYSQL_TYPE_TINYTINYINTcharMYSQL_TYPE_SHORTSMALLINTshort intMYSQL_TYPE_LONGINTintMYSQL_TYPE_LONGLONGBIGINTlong long intMYSQL_TYPE_FLOATFLOATfloatMYSQL_TYPE_DOUBLEDOUBLEdoubleMYSQL_TYPE_TIMETIMEMYSQL_TIMEMYSQL_TYPE_DATEDATEMYSQL_TIMEMYSQL_TYPE_DATETIMEDATETIMEMYSQL_TIMEMYSQL_TYPE_TIMESTAMPTIMESTAMPMYSQL_TIMEMYSQL_TYPE_STRINGCHARchar 数组MYSQL_TYPE_VAR_STRINGVARCHARchar 数组MYSQL_TYPE_TINY_BLOBTINYBLOB/TINYTEXTchar 数组缓冲区MYSQL_TYPE_BLOBBLOB/TEXTchar 数组缓冲区MYSQL_TYPE_MEDIUM_BLOBMEDIUMBLOB/MEDIUMTEXTchar 数组缓冲区MYSQL_TYPE_LONG_BLOBLONGBLOB/LONGTEXTchar 数组缓冲区注:MYSQL_TIME是mysql.h头文件中定义的类型,其结构参见附录。8、函数:bool Bind();原型:bool Bind(void);功能:连接变量到结果集。参数:无。返回值:成功,返回true;失败,返回false。说明:需调用SetBind(),将所有要注册的参数注册后,再调用该函数;Bind前要求结果集存在,即执行过Execute()函数。9、函数:unsigned long Num_Rows();原型:unsigned long Num_Rows(void);功能:得到结果集中有多少行数据。参数:无。返回值:返回结果集中行数。说明:该函数的执行必须在已经后的结果集之后,即:执行Execute()后。10、函数:bool GetRow();原型:bool GetRow(my_ulonglong row=NEXT_ROW);功能:从结果集中取出一行,并将该行的各个数据项存入注册的变量中。参数:row取哪一行返回值:成功,返回true;失败,返回false。说明:如果使用默认参数,则获得下一行数据。11、函数:void Free_Result(); void Close();同:mysql_class 类中响应函数说明。附录:l MYSQL_TIME 类型说明该结构用于将DATE、TIME、DATETIME和TIMESTAMP数据直接发送到服务器,或从服务器直接接收这类数据。将MYSQL_BIND结构的buffer_type成员设置为临时值之一,并将buffer成员设置为指向MYSQL_TIME结构,即可实现该点。MYSQL_TIME结构包含下述成员:unsigned int year年份unsigned int month 月份unsigned int day 天unsigned int hour 小时unsigned int minute 分钟unsigned int second 秒my_bool neg 布尔标志,用于指明时间是否为负数。unsigned long second_part 秒的分数部分。该成员目前不使用。l SetBind()中一些默认参数设置说明:my_bool *is_null参数:my_bool是mysql.h头文件中定义的类型,其使用和bool类型完全相同。当调用stmt_class:GetRow()函数之后,如果对应数据项为空,则is_null指向的my_bool类型的变量值将被设定为ture。unsogned long *length参数:这个参数的使用和is_null参数类似,都是为了返回数据项的性质的,length可以返回数据项的实际长度。例如:数据库中的某数据项类型是varchar,其值是“hello” ;我们定义变量 char str100;用来接收该数据项的值,unsigned long len来接收数据项的长度;并调用了SetBind(n,MYSQL_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金融科技在财富管理领域的创新应用研究
- 2025年在线教育平台课程进度跟踪与用户满意度评价报告
- 工业互联网平台入侵检测系统2025年可视化安全监控优化报告001
- 深度解读2025年不良资产处置市场格局与创新模式发展报告
- 2025年医院电子病历系统优化与医疗信息化人才培养策略报告
- 2025届广东省广州市南沙区八年级英语第二学期期中达标测试试题含答案
- 咨询工程师2017课件
- 2025年医药企业研发外包(CRO)模式下的临床试验监测与数据收集报告
- 周长课件介绍
- 麻醉护理制度培训课件
- 小学用电安全课件
- 2024年河南省兰考县教育局公开招聘试题含答案分析
- 2025年北京市高考英语试卷真题(含答案解析)
- 2025年高考英语全国二卷听力试题答案详解讲解(课件)
- 招商运营笔试题目及答案
- 湟水河河湟新区段北岸防洪生态综合治理项目 社会稳定风险评估报告
- JG/T 272-2010预制高强混凝土薄壁钢管桩
- JG/T 266-2011泡沫混凝土
- 杂屋转让合同协议书
- 智能药盒创新创业计划书
- 2024年湖北省中考地理生物试卷(含答案)
评论
0/150
提交评论