热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

在Linux下通过C语言访问MySQL数据库的方法-mysql教程

错误提示:Can

错误提示:Can

错误提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

解决方法:在/var/run/ 下面创建一个 mysqld目录,然后建立一个链接指向:/opt/lampp/var/mysql/mysql.sock

输入指令: ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock

即可解决。

*******************************************************************************************************************

main.c文件 程序代码如下:

//=======================================================================

#include
#include
#include

main()
{
char dbhost[32],dbuser[16],dbpasswd[16],dbname[16];
char query[256];
int count;
MYSQL * mysql; /*表示对一个数据库连接的句柄*/
MYSQL_RES *mysql_res; /*代表返回行的一个查询的结果*/
MYSQL_ROW mysql_row; /*字符串数组*/
MYSQL_FIELD *field;
my_ulonglong rows;
int i,num_fields;
/*该类型用于行编号和mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()
* */

sprintf(dbhost,"localhost");
sprintf(dbuser,"root");
sprintf(dbpasswd,"123456");
sprintf(dbname,"system");


if(!(mysql=mysql_init(NULL))) /*获得或初始化一个MYSQL结构*/
{
printf("mysql_init失败!");
mysql_close(mysql);
exit(0);
}

if(!mysql_real_connect(mysql,dbhost,dbuser,dbpasswd,dbname,3306,NULL,0))
{ /*连接一个MySQL服务器*/
printf("%s",mysql_error(mysql));
printf("\n连接服务器失败,请联系系统管理人员!\n");
mysql_close(mysql);
exit(0);
}

strcpy(query,"select * from ns_materiel_import where status=0 order by itemid asc limit 1000");
if(mysql_query(mysql,query)) /*执行指定为一个空结尾的字符串的SQL查询*/
{
printf("%s",mysql_error(mysql));
printf("\nmysql_query出错!\n");
mysql_close(mysql);
exit(0);
}
mysql_res=mysql_store_result(mysql); /*检索一个完整的结果集合给客户*/
rows=mysql_num_rows(mysql_res); /*返回一个结果集合重的列的数量*/
if(rows==0) /*此管理码不存在 返回*/
{
printf("\n返回值为空\n");
mysql_free_result(mysql_res); /*释放一个结果集合使用的内存*/
mysql_close(mysql); /*关闭一个服务器连接*/
exit(0);
}
else
{
num_fields = mysql_num_fields(mysql_res);
for(i = 0; i {
field = mysql_fetch_field_direct(mysql_res, i);
printf("%s\t", field->name);
}


for(count=0; count {
mysql_row=mysql_fetch_row(mysql_res); /*从结果集合中取得下一行*/
for(i = 0; i {
printf("%s\t",mysql_row[i]);
}
printf("\n");
}

}

#if 0
for(count=0; count {
mysql_row=mysql_fetch_row(mysql_res); /*从结果集合中取得下一行*/
printf("用户ID:%s\t",mysql_row[0]);
printf("用户名:%s\t",mysql_row[2]);
printf("真实姓名:%s\t",mysql_row[4]);
printf("昵称:%s\t",mysql_row[5]);
printf("职务:%s\t",mysql_row[7]);
printf("电话:%s\n",mysql_row[8]);
}
#endif

mysql_free_result(mysql_res);
mysql_close(mysql);
printf("\nApp exit!!!\n");
}

*******************************************************************************************************************

Makefile 文件内容如下:

#=======================================================================
# Makefile template write by albert.shi
# 2011-06-03 21:09
# Shanghai
#=======================================================================

# Standard defines:
CC = gcc

WRES = windres

HOMEV = /usr/src/linux-2.6.32.21
VPATH = $(HOMEV)/include
oDir = .
Bin = .
Src = .
libDirs =
incDirs =

LIBS = -s -rdynamic -L/usr/lib/mysql -lmysqlclient
C_FLAGS += -I/usr/include/mysql/ -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX -Wl,-Bsymbolic-functions

#C_FLAGS = -O -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX -Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient

SRCS =\
$(Src)/main.c\
# $(Src)/getfileargv.c\
# $(Src)/bdidll.c\
# $(Src)/bdisetup.c

EXOBJS =\
$(oDir)/main.o\
# $(oDir)/getfileargv.o\
#$(oDir)/bdidll.o\
#$(oDir)/bdisetup.o

ALLOBJS = $(EXOBJS)
ALLBIN = $(Bin)/app
ALLTGT = $(Bin)/app

# User defines:

#@# Targets follow ---------------------------------

all: $(ALLTGT)

objs: $(ALLOBJS)

cleanobjs:
rm -f $(ALLOBJS)

cleanbin:
rm -f $(ALLBIN)

cleantgt:
rm -f $(ALLTGT)

clean: cleanobjs cleanbin

cleanall: cleanobjs cleanbin cleantgt

#@# User Targets follow ---------------------------------


#@# Dependency rules follow -----------------------------
#--- list all bin file ----------------------------------
$(ALLTGT): $(EXOBJS)
$(CC) -o $(ALLBIN) $(EXOBJS) $(incDirs) $(libDirs) $(LIBS)

#--------------------------------------------------------
#---- compile all *.c to *.c ------
%.o : %.c
$(CC) $(C_FLAGS) $(incDirs) -c -o $@ $<

#--- another way to compile *.c to *.o------
#$(oDir)/main.o : main.c
# $(CC) $(C_FLAGS) $(incDirs) -c -o $@ $<

#--------------------------------------------------------

linux


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
author-avatar
少才奇妙Albert
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有