MySQL的C语言编程(一)

系统 2371 0

初学MySQL,记录一下MySQL用c语言编程时遇到的问题。

这是我的源程序:

      
         1
      
      
        int
      
       main(
      
        void
      
      
        )


      
      
         2
      
      
        {


      
      
         3
      
       MYSQL *mysql=
      
        NULL;


      
      
         4
      
      
         5
      
      
         6
      
      
        if
      
      ((mysql=mysql_init(mysql))==
      
        NULL)


      
      
         7
      
      
        {


      
      
         8
      
       fprintf(stderr,
      
        "
      
      
        Cannot initialize MySQL
      
      
        "
      
      
        );


      
      
         9
      
      
        return
      
      
        1
      
      
        ;


      
      
        10
      
      
        }


      
      
        11
      
      
        if
      
      (mysql_real_connect(mysql,
      
        "
      
      
        localhost
      
      
        "
      
      ,
      
        "
      
      
        kerry
      
      
        "
      
      ,
      
        "
      
      
        beck123
      
      
        "
      
      ,NULL,
      
        0
      
      ,NULL,
      
        0
      
      )==
      
        NULL)


      
      
        12
      
      
        {


      
      
        13
      
       fprintf(stderr,
      
        "
      
      
        %d:%s \n
      
      
        "
      
      
        ,mysql_errno(mysql),mysql_error(mysql));


      
      
        14
      
      
        return
      
      
        1
      
      
        ;


      
      
        15
      
      
        }


      
      
        16
      
       printf(
      
        "
      
      
        Succeed!\n
      
      
        "
      
      
        );


      
      
        17
      
      
        return
      
      
        0
      
      
        ;


      
      
        18
      
       }
    

 

MySQL的c API有几个重要的数据类型:

  •  MYSQL

    该结构代表 1 个数据库连接的句柄。几乎所有的 MySQL 函数均使用它。不应尝试拷贝 MYSQL 结构。不保证这类拷贝结果会有用

  • MYSQL_RES

    该结构代表返回行的查询结果( SELECT SHOW DESCRIBE EXPLAIN )。在本节的剩余部分,将查询返回的信息称为“结果集”。

  •  MYSQL_ROW

    这是 1 行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。(如果字段值可能包含二进制数据,不能将其当作 由Null 终结的字符串对待,这是因为这类值可能会包含 Null 字节)。行是通过调用 mysql_fetch_row() 获得的。

  •  MYSQL_FIELD

    该结构包含关于字段的信息,如字段名、类型和大小。这里详细介绍了其成员。通过重复调用 mysql_fetch_field() ,可为每个字段获得 MYSQL_FIELD 结构。字段值不是该结构的组成部份,它们包含在 MYSQL_ROW 结构中。

  •  MYSQL_FIELD_OFFSET

    这是 MySQL 字段列表偏移量的“类型安全”表示(由 mysql_field_seek() 使用 )。偏移量是行内的字段编号,从 0 开始。



声明“MYSQL *mysql=NULL;“,必须为该指针赋值为NULL。如果定义为"MYSQL *mysql;",不为该指针赋值,就会生成野指针,程序运行时会发生“段错误 (核心已转储)“错误。

“野指针”不是NULL指针,是指向“垃圾”内存(不可用内存)的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if无法判断一个指针是正常指针还是“野指针”。有个良好的编程习惯是避免“野指针”的唯一方法。

 

调用mysql_init()函数,该函数会 分配或初始化与 mysql_real_connect() 相适应的 MYSQL 对象。 如果 mysql NULL 指针, 该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果 mysql_init() 分配了新的对象,当调用 mysql_close() 来关闭连接时。将释放该对象。

 

MySQL的C语言编程(一)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论