还剩6页未读,继续阅读
文本内容:
蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈莂薁螂羇芅蒇螁肀蒀螆螀膂芃蚂蝿芄蒈薈袈羄芁蒄袇肆蒇莀袇腿芀蚈袆羈蒅蚄袅肁莈薀袄膃薃蒆袃芅莆螅袂羅腿蚁羁肇莄薇羁膀膇蒃羀衿莃荿罿肂膆螇羈膄蒁蚃羇芆芄蕿羆羆葿蒅羅肈节螄肅膀蒈蚀肄芃芀薆肃羂蒆蒂虿膅艿蒈虿芇薄螇蚈羇莇蚃蚇聿薃蕿蚆膁莅蒅蚅芄膈螃螄羃莄虿螃肆膆薅螃芈MYSQL数据库数据读取类说明
1、功能只能用于数据库中数据读取
2、使用
1、有两个类mysql_class和stmt_class如果我们需要对读出的数据做一些运算,则应使用stmt_class类;如果我们仅仅要将数据读出并显示出来,则使用mysql_class更方便
2、mysql_class类功能及使用流程读出的数据首先存入本地,然后以“行”为单位输出所有类型的数据在输出时均已被转化为字符串的格式(如图1,以一个例子来说明)
3、stmt_class类的功能及使用流程读出数据到您定义的变量中,保持原始的数据类型在获得数据前,您需要调用Bind函数,把程序中定义的数据和数据库对象绑定以后,每执行一次GetRow操作,可将查询结果中的一行的所有域,存入对应的变量中(如图2,以一个例子来说明)
3、mysql_class类中函数说明
1、构造函数mysql_class;原型mysql_classstringhoststringuserstringpasswdstringdb=;参数host数据库服务器IP地址user登陆服务器的用户名passwd____要访问的数据库的名字返回值无说明db可以不指定,而在连接之后调用SelectDB函数指定.
2、函数boolConnect原型boolConnectvoid;参数无返回值若连接成功,返回true;失败,返回false
3、函数:boolSelectDB;原型boolSelectDBstringdb;功能选择从哪个数据库中读数据参数db数据库名字返回值成功,返回true;失败,返回false说明必须在连接数据库之后调用,这个过程也可在构造函数中完成
4、函数voidSetQuery;原型voidSetQuerystringquery;功能设置要执行的查询语句参数queryMYSQL语句返回值成功,返回true;失败,返回false说明也可以在执行Execute是指定
5、函数boolExecute;原型boolExecutestringquery=;功能执行查询语句,返回结果集参数query待执行的MYSQL语句返回值成功,返回true;失败,返回false说明如果参数取默认值,则执行由SetQuery函数指定的MYSQL语句
6、函数unsignedlongNum_Rows;原型unsignedlongNum_Rowsvoid;功能返回结果集中有多少行数据参数无返回值返回结果集中行数说明该函数的执行必须在已经后的结果集之后,即执行Execute后
7、函数boolGetRow;原型boolGetRowmy_ulonglongrow=NEXT_ROW;功能获得一行数据,存入缓冲区参数row获得第几行数据返回值成功,返回true;失败,返回false说明如果参数取默认值,则读出下一行数据
8、函数stringGetField;原型stringGetFieldunsignedintn;功能从以保存的行中,读出其中一个域的值参数n域的编号返回值以格式化字符串的形式,返回该域的值说明如果错误或该域是空值,都会返回空字符串;因此,应定要再GetRow函数成功调用之后调用该函数
9、函数voidFree_Result;原型voidFree_Resultvoid;功能释放结果集占用的内存空间参数无返回值无说明该函数会在您再次执行查询自动调用,您可以不执行该操作
10、函数voidClose;原型voidClosevoid;功能关闭连接参数无返回值无说明在重新连接或对象析够时,该函数都会被自动调用,您可以不执行该操作;如果您读取数据后,不需要使用数据库了,也可以执行该操作
4、stmt_class类中函数说明
1、构造函数stmt_class;原型stmt_classstringhoststringuserstringpasswdstringdb=;参数host数据库服务器IP地址user登陆服务器的用户名passwd____要访问的数据库的名字返回值无说明db可以不指定,而在连接之后调用SelectDB函数指定.
2、函数boolConnect原型boolConnectvoid;参数无返回值若连接成功,返回true;失败,返回false
3、函数:boolSelectDB;原型boolSelectDBstringdb;功能选择从哪个数据库中读数据参数db数据库名字返回值成功,返回true;失败,返回false说明必须在连接数据库之后调用,这个过程也可在构造函数中完成
4、函数voidSetQuery;原型voidSetQuerystringquery;功能设置要执行的查询语句参数queryMYSQL语句返回值成功,返回true;失败,返回false说明也可以在执行Execute是指定
5、函数boolExecute;原型boolExecutestringquery=;功能执行查询语句,返回结果集参数query待执行的MYSQL语句返回值成功,返回true;失败,返回false说明如果参数取默认值,则执行由SetQuery函数指定的MYSQL语句
6、函数voidSetBindNum;原型voidSetBindNumunsignedintnum;功能设置您要读取多少列数据参数num列数返回值无说明在执行SetBind前必须执行该函数
7、函数boolSetBind;原型boolSetBindunsignedintnenumenum_field_typesftvoid*bufferunsignedlong*length=NULLmy_bool*is_null=NULLunsignedlongbuffer_length=0;功能注册变量参数n这是您注册的第几个变量ft数据库中对应的数据类型buffer您定义的变量的地址length返回数据项的实际长度(用于varchar,blob等类型数据时,很有用,也可以不使用)is_null返回数据项是否为空值(可以不使用)buffer_lengthbuffer的长度(单位BYTE,也可以不指定,但要保证buffer足够大)返回值成功,返回true;失败,返回false说明an取值在0到您调用SetBindNum时设定的值-1之间,注册buffer的顺序要与查询语句SELECT的列相同,例如要执行的查询语句是SELECTnumber,nameFROMstaff您定义了变量(两个)intnum;charstr_name
[20];则您应执行SetBindNum
(2);并相应调用SetBind(0,MYSQL_TYPE_LONG,num);SetBind(1,MYSQL_TPYE_STRINGstr_name);这样您就完成的变量的注册b)关于类型匹配的说明很容易理解,我们定义了一些用来接收查询结果的变量,这些变量的类型应当与数据库中的对应项的类型相匹配,下表是对应关系enumenum_field_types值SQL类型C类型MYSQL_TYPE_TINYTINYINTcharMYSQL_TYPE_SHORT__ALLINTshortintMYSQL_TYPE_LONGINTintMYSQL_TYPE_LONGLONGBIGINTlonglongintMYSQL_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、函数boolBind;原型boolBindvoid;功能连接变量到结果集参数无返回值成功,返回true;失败,返回false说明需调用SetBind(),将所有要注册的参数注册后,再调用该函数;Bind前要求结果集存在,即执行过Execute()函数
9、函数unsignedlongNum_Rows;原型unsignedlongNum_Rowsvoid;功能得到结果集中有多少行数据参数无返回值返回结果集中行数说明该函数的执行必须在已经后的结果集之后,即执行Execute后
10、函数boolGetRow;原型boolGetRowmy_ulonglongrow=NEXT_ROW;功能从结果集中取出一行,并将该行的各个数据项存入注册的变量中参数row取哪一行返回值成功,返回true;失败,返回false说明如果使用默认参数,则获得下一行数据
11、函数voidFree_Result;voidClose;同mysql_class类中响应函数说明附录MYSQL_TIME类型说明该结构用于将DATE、TIME、DATETIME和TIMESTAMP数据直接发送到服务器,或从服务器直接接收这类数据将MYSQL_BIND结构的buffer_type成员设置为临时值之一,并将buffer成员设置为指向MYSQL_TIME结构,即可实现该点MYSQL_TIME结构包含下述成员unsignedintyear年份unsignedintmonth月份unsignedintday天unsignedinthour小时unsignedintminute分钟unsignedintsecond秒my_boolneg布尔标志,用于指明时间是否为负数unsignedlongsecond_part秒的分数部分该成员目前不使用SetBind中一些默认参数设置说明my_bool*is_null参数my_bool是mysql.h头文件中定义的类型,其使用和bool类型完全相同当调用stmt_class::GetRow函数之后,如果对应数据项为空,则is_null指向的my_bool类型的变量值将被设定为tureunsognedlong*length参数这个参数的使用和is_null参数类似,都是为了返回数据项的性质的,length可以返回数据项的实际长度例如数据库中的某数据项类型是varchar,其值是“hello”;我们定义变量charstr
[100];用来接收该数据项的值,unsignedlonglen来接收数据项的长度;并调用了SetBindnMYSQL_TYPE_BLOBbufferlen,0,0函数;则以后执行GetRow获得数据的同时,可将该数据项的实际长度5同时获得(len的值将是5)unsignedlongbuffer_length参数可以设定该参数的值为buffer的大小例如定义charbuffer
[100];来读取数据库中BLOB类型的数据,执行SetBindnMYSQL_TYPE_BLOBbuffer00100;指定该参数的值是100,这样如果数据库中某个BLOB数据项长度大于100BYTE,则数据被截断,但不会造成溢出错误芇莆薇螃肀节薆袅芆薁薅羇肈蒇蚄肀芄莃蚄蝿肇艿蚃袂节膅蚂肄肅薄蚁螄莀蒀蚀袆膃莆虿羈荿节蚈肁膁薀螈螀羄蒆螇袃膀莂螆羅羃芈螅螅膈芄螄袇肁薃螃罿芆葿螃肁聿莅螂螁芅芁袁袃肇蕿袀羆芃蒅衿肈肆莁袈袈芁莇蒅羀膄芃蒄肂莀薂蒃螂膂蒈蒂袄莈莄蒁羇膁芀薀聿羃薈薀蝿腿蒄蕿羁羂蒀薈肃芇莆薇螃肀节薆袅芆薁薅羇肈蒇蚄肀芄莃蚄蝿肇艿蚃袂节膅蚂肄肅薄蚁螄莀蒀蚀袆膃莆虿羈荿节蚈肁膁薀螈螀羄蒆螇袃膀莂螆羅羃芈螅螅膈芄螄袇肁薃螃罿芆葿螃肁聿莅螂螁芅芁袁袃肇蕿袀羆芃蒅衿肈肆莁袈袈芁莇蒅羀膄芃蒄肂莀薂蒃螂膂蒈蒂袄莈莄蒁羇膁芀薀聿羃薈薀蝿腿蒄蕿羁羂蒀薈肃芇莆薇螃肀节薆袅芆薁薅羇肈蒇蚄肀芄莃蚄蝿肇艿蚃袂节膅蚂肄肅薄蚁螄莀蒀蚀袆膃莆虿羈荿节蚈肁膁薀螈螀羄蒆螇袃膀莂螆羅羃芈螅螅膈芄螄袇肁薃螃罿芆葿螃肁聿莅螂螁芅芁袁袃肇蕿袀羆芃蒅衿肈肆莁袈袈芁莇蒅羀膄芃蒄肂莀薂蒃螂膂蒈蒂袄莈莄蒁羇膁芀薀聿羃薈薀蝿腿蒄蕿羁羂蒀薈肃芇莆薇螃肀节薆袅芆薁薅羇肈蒇蚄肀芄莃蚄蝿肇艿蚃袂节膅蚂肄肅薄蚁螄莀蒀蚀+SELLECT*FORMstaff(调用了Execute执行查询)执行GetRow1;执行GetField2;输出一个string对象,“1991-4-2”(改域在数据库中是DATATIME类型)图1天蓝色框,为该类(和stmt_class类相比)的特殊操作数据库的表staffnumberintnamevarcharbirthdaydate_time1zhang1990-3-12wang1991-4-23li1992-5-2行、列标号起始为“0”初始化类对象调用Connect连接服务器第1行第2列数据库的表staffnumberintnamevarcharbirthdaydate_time1zhang1990-3-12wang1991-4-23li1992-5-2MYSQL语句SELLECTnumbernameFORMstaff调用Execute执行查询执行GetRow1;此时,第一行中的域number,name分别被存入number和var_name中第1行第2列行标号起始为“0”图2天蓝色框,为该类(和mysql_class类相比)的特殊操作SetBindNum2;首先,定义相关类型变量,以存储从数据库获得的数据intnumber;charbuf_name
[20];SetBind0void*number;SetBind1void*buf_name
[0];执行Bind;执行GetRow1;执行绑定操作,变量绑定结果集注册要绑定的变量设置绑定的变量个数(这里是2)初始化类对象调用Connect连接服务器注浅色部分,并非完成一次查询所必需的操作,可以忽略注浅色部分,并非完成一次查询所必需的操作,可以忽略。