关于用C操作mysql的一些函数介绍

来源:互联网 发布:编程中绝对值怎么表示 编辑:程序博客网 时间:2024/06/05 13:07


1.连接数据库。 
  
从C语言连接MySQL数据库包含两个步骤:    
a)初始化连接句柄结构;    
b)实际创建连接。


关于a):
首先使用mysql_init初始化连接句柄:        MYSQL * mysql_init (MYSQL *); 
    通常传递一个空指针给mysql_init这个函数,它会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,他将被重新初始化。如果出错,返回NULL。


关于b):
初始化成功后,则使用mysql_real_connect来创建一个实际的连接:
MYSQL * mysql_real_connect(MYSQL * connection, const char * server_host, const char * sql_user_name,  const char * sql_password, const char *db_name, unsigned int port_number,  const char * unix_socket_name,  unsigned int flags  );      
connection必须是已经初始化的连接句柄结构,server_host可以是主机名,也可以是IP地址,如果仅仅连接到本机,可以使用 localhost来优化连接类型。
port_number和unix_socket_name应该分别为0和NULL,除非改变了MYSQL安装的默认设置。     
如果无法连接,返回NULL。


------------------------------------------
2.关闭数据库。


完成操作后,在程序正常退出前,应该使用mysql_close关闭这个连接句柄。 
        
void  mysql_close(MYSQL * connection);


------------------------------------------
3.操作数据库。


进入数据库中之后,就可以开始对数据库进行读写操作了。     
数据库的主要操作包括select, insert, update, delete四种。




a)sql语句的嵌入: 
        
执行SQL语句的主要API函数是: 
        int  mysql_query(MYSQL *connection, const char * query) 
        
接受已经建立的连接结构指针和文本字符串形式的有效SQL语句(句末不用分号)。
成功返回0。 
       
还有一个比较重要的函数,mysql_affected_rows(),他返回无符号类型,当使用printf时,推荐使用%lu格式将其转换为无符号长整型。
此函数返回受之前执行的update,delete,insert等查询影响的行数。 
       


b)select语句的使用: 
    
select语句是SQL语句中使用最频繁的操作。    
    
一个完整的提取数据过程应该包含以下四个步骤:执行查询,提取数据,处理数据,清理。 
    
**使用mysql_query来发送SQL语句,
**使用mysql_store_result或者mysql_use_result来提取数据。
**然后使用 mysql_fetch_row调用来处理数据,
**最后,使用mysql_free_result来释放查询占用的内存资源。 
    

mysql_use_result和mysql_store_result都是返回一个指向结果集结构(result  set  structure)的指针,如果失败则返回NULL。
区别在于store将查询到的数据库中的结果直接放在这个结果集中,而use则不直接将最终数据库的数据结果放在这个结果集中。
store其实就是把数据直接读到本地内存中,因此它比较适合数据量较小的查询。
use则类似于一种流的操作,并不是一次就返回所有的结果。


------------------------------------------(未完待续)
0 0
原创粉丝点击