c语言用函数访问数据库 c++访问数据库的方法

c语言读取mysql库中的数据的程序头文件怎么设置

Mysql C API编程步骤

成都创新互联公司主营新郑网站建设的网络公司,主营网站建设方案,重庆App定制开发,新郑h5小程序开发搭建,新郑网站营销推广欢迎新郑等地区企业咨询

1、首先我们要包含mysql的头文件,并链接mysql动态库。即添加以下语句:

#include WinSock2.h // 进行网络编程需要winsock2.h

#include mysql.h

#pragma comment(lib, “libmysql.lib”)

2、创建MYSQL变量。如:

MYSQL mysql;

3、初始化MYSQL变量。

mysql_init(mysql);

4、调用mysql_real_connect函数连接Mysql数据库。mysql_real_connect函数的原型如下:

MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);

参数说明:mysql–前面定义的MYSQL变量;host–MYSQL服务器的地址;user–登录用户名;passwd–登录密码;db–要连接的数据库;port–MYSQL服务器的TCP服务端口;unix_socket–unix连接方式,为NULL时表示不使用socket或管道机制;clientflag–Mysql运行为ODBC数据库的标记,一般取0。连接失败时该函数返回0。

5、调用mysql_real_query函数进行数据库查询。mysql_real_query函数的原型如下:

int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);

参数说明:mysql–前面定义的MYSQL变量;q–SQL查询语句;length–查询语句的长度。

查询成功则该函数返回0。

6、通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。

两个函数的原型分别为:

MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);

MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);

这两个函数分别代表了获取查询结果的两种方式。第一种,调用mysql_store_result函数将从Mysql服务器查询的所有数据都存储到客户端,然后读取;第二种,调用mysql_use_result初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行mysql_fetch_row读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result。

7、调用mysql_fetch_row函数读取结果集数据。

上述两种方式最后都是重复调用mysql_fetch_row函数读取数据。mysql_fetch_row函数的原型如下:

MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);

参数result就是mysql_store_result或mysql_use_result的返回值。

该函数返回MYSQL_ROW型的变量,即字符串数组,假设为row,则row〔i〕为第i个字段的值。当到结果集尾部时,此函数返回NULL。

8、结果集用完后,调用mysql_free_result函数释放结果集,以防内存泄露。mysql_free_result函数的原型如下:

void STDCALL mysql_free_result(MYSQL_RES *result);

9、不再查询Mysql数据库时,调用mysql_close函数关闭数据库连接。mysql_close函数的原型为:

void STDCALL mysql_close(MYSQL *sock);

ubuntu下用C语言访问数据库出现‘mysql_init’未定义的引用的错误

只要libmysqlclient.so在/usr/lib/mysql 中,-L/usr/lib/mysql -lmysqlclient 就是link libmysqlclient.so

所以,你应该找一下libmysqlclient.so的安装位置,比如安装在/usr/lib/i386-linux-gnu

链接libmysqlclient.so,就是-L/usr/lib/i386-linux-gnu -lmysqlclient

另外,这种编译出现的问题,请贴出具体的输出,不要泛泛的讲。泛泛的讲别人根本不明白是那里出了问题。。。

在linux系统下,用C语言库函数对文件进行访问。在线等答案。悬赏50财富值,感谢各位!

#include stdio.h

#include string.h

#include sys/types.h

#include sys/stat.h

#include fcntl.h

int main(){

int fd,count;

char buffer[1000];    //开辟一块内存,临时存放读取到的内容

memset(buffer,0,1000);//先清空,全部置零

fd=open("char.txt",O_RDWR);//打开文件char.txt,并返回文件描述符fd

while((count=read(fd,buffer,1000))!=0){//一直读,直到文件尾

printf("%s\ncount=%d\n",buffer,count);//打印内容及字节总量

}

close(fd);//别忘了关文件句柄

return 0;

}

经编译连接,输出结果没问题

为了简洁明了,没有写错误判断以免影响新手抓重点

有任何问题欢迎追问

求赏

C语言访问SQLite数据库报错

我用sqlite3.7.10都没有任何问题,不过我没试过楼主直接用dos的这个方法。

另外就是自己做的lib文件要放倒lib文件夹里,sqlite3.dll文件要放到system32文件夹里,64位操作系统要放到syswow64文件夹里,这里要注意并不是每个版本的sqlite3.dll文件都适合自己的机器,我也是试了好多次才成功。

不知道能不能帮到你,刚才是我的全部理解了。

linux系统下c语言连接mysql数据库时有关mysql_error这个函数的返回值的问题,求知情人士

应该这样用,连接的时候不要指定数据库,分步操作和检测

if(!mysql_real_connect(character_ptr,"localhost","root","24157518",

NULL

,0,NULL,0))

printf("Error

connecting

to

server:

%s\n",

mysql_error(character_ptr));

if(!mysql_select_db(character_ptr,

"test_database"))

printf("Error

connecting

to

database:

%s\n",

mysql_error(character_ptr));


分享文章:c语言用函数访问数据库 c++访问数据库的方法
新闻来源:http://cdiso.cn/article/doccdsg.html

其他资讯