zoukankan      html  css  js  c++  java
  • MySQL的C语言编程(一)

    初学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 
    ",mysql_errno(mysql),mysql_error(mysql));
    14 return 1;
    15 }
    16 printf("Succeed!
    ");
    17 return 0;
    18 }

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

    •  MYSQL

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

    • MYSQL_RES

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

    •  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对象。如果mysqlNULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。

  • 相关阅读:
    C#学习之委托和事件
    ArcGIS许可启动问题
    空间插值——克里金插值
    maven 问题解决 tools以及jconsole两个jar包 无效
    JDBC代码示例
    mysql 同一IP 产生太多终端的数据库连接导致阻塞
    apache 反向代理配置
    oracle、mysql、sql server等;流行数据库的链接驱动配置
    POI XSSF与HSSF的 使用区别
    使用IDEA开发Activiti工作流
  • 原文地址:https://www.cnblogs.com/xianzhedeyu/p/3211138.html
Copyright © 2011-2022 走看看