在我的应用程序中,是通过MySQL的C语言API操作MySQL数据库.
我有一个疑问,对于select得到的记录集,每一条记录MYSQL_ROW类型,实际上就是char**.也就是说所有的字段都是也字符串的形式返回的.如果某个字段为int,我就只能通过atoi进行转化了.
请问1.如果使用API,字段只能以字符串的形式返回?能不能直接返回int,long, double等类型?
    2.如果必须要通过atoi,atol,atof等一系列函数进行结果的转化,那么对于一个上万条记录的查询而言,会不会对性能有一定的影响?

解决方案 »

  1.   

    MySQL的C语言API前些时候还研究过。“如果使用API,字段只能以字符串的形式返回?”MYSQL_ROW类型,实际上就是char**,没错。
     MYSQL_ROW row = mysql_fecth_row(...)
    row[0]就是char*型的,标识第一列数据的在内存中的地址。
    不要把返回值单纯看作是字符串,而看作是内存块。
    那么数据有多长呢?用mysql_fetch_lengths()取得。
    具体看一下MYSQL手册。
    如果我们能获得数据在内存中的起始地址和长度,那想当什么类型处理就怎么处理。如果你已知类型是int的,就像这样转换:(int)*row[0]。
      

  2.   

    to wzb13(想通了):
    如果你说的方法可行的话。那么text与datetime类型的值。如何取呢?