MySQL的C语言编程(一)

原文: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 \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()来关闭连接时。将释放该对象。

时间: 2024-10-13 11:45:01

MySQL的C语言编程(一)的相关文章

笔记整理--Linux平台MYSQL的C语言

Linux平台MYSQL的C语言API全列表 - 第三只眼的专栏 - 博客频道 - CSDN.NET - Google Chrome (2013/8/18 22:28:58) Linux平台MYSQL的C语言API全列表 2013-02-19 15:17 78人阅读 评论(0) 收藏 举报 1.mysql_affected_rows()            //返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. 2.mysql_autocommit()        

《Go语言编程入门》视频课程开课了

作为拥有多年工作经验的运维老鸟,我没有选择运维常用的Python作为我今后的主要使用语言.Python编写运维程序的开发效率虽然很高,但随着代码量的增大,以及Python的缩进式语法结构,可读性和维护性并不很高.加之Python本身的设计,并不原生支持多线程多核,我考虑到当程序代码达到一定规模时,必然会考虑它的执行效率和维护成本.最终放弃了Python,选择语言的过程中被Google新出的Go语言吸引了.Go本身脱胎于C,语法和C比较像,我本身就一直学习和编写C和PHP程序,习惯了大括号的语法结

轻松学习C语言编程的秘诀:总结+灵感

目前在准备一套C语言的学习教程,所以我这里就以C语言编程的学习来讲.注意,讲的是"轻松学习",那种不注重方法,拼命玩命的方式也有其效果,但不是我提倡的.我讲究的是在方式方法对头.适合你.减轻你学习负担和心里压力的前提下,才适当的抓紧时间. 因此,探索一种很好的学习方法就是我所研究的主要内容. 众所周知,学习C语言并非易事,要学好它更是难上加难.这和你期末考试背会几个题目的答案考上满分没多大关系,也就是说你考试满分也说明不了你学好.学精通了C语言.那么怎么才算学精通C语言?闭着眼睛对自己

YL-236 LCD12864汉字显示C语言编程

sfr P0=0x80; sfr P1=0x90; sfr P2=0xa0; sfr P3=0xb0; sbit cs1=P2^0; sbit cs2=P2^1; sbit e=P2^2; sbit rw=P2^3;//可以直接接地 sbit di=P2^4; sbit rst=P2^5;//默认为1,可以直接接电源 extern unsigned char code abc[] ; ys(int ms) { int k,d; for(k=0;k<ms;k++) for(d=0;d<123;d

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

LINUX下C语言编程基础

实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人

关于C语言编程软件的推荐!

现在有各种各样的C语言编程软件,现在推荐一下codeblocks,codeblocks不仅仅局限于c语言,它适用于多种语言. Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(2.6.2 unicode)版.对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢,再也不必忍受VS.NET的庞大和高昂的价格. 在网络上直接下载

linux下的c语言编程删除文件夹

刚刚在学习开始做新项目的时候,学长布置了一项任务,就是在给定一个目录下,要将这个目录下一个星期之前的目录包括里面的文件全部删除,只保留这一个星期内的.百度了好久的资料,终于完成,记录一下防止忘记.(注:文件夹名称默认为日期格式,如20140716) #include<dirent.h> #include<sys/types.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #i

学习go语言编程系列之helloworld

1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装在windows下,直接一步步点击安装即可. 3. 配置在正式开始go语言编程之前,需要进行一些基础环境变量的配置.在这里主要需要配置2个环境变量:GOROOT和GOPATH.(1)GOROOT:GO的安装路径,需要添加到环境变量中. Linux环境: vim /etc/profile export