cygwin下用mysql c api连接数据库详解
来源:互联网 发布:数据库支持工程师招聘 编辑:程序博客网 时间:2024/05/21 02:50
一、典型错误:
错误1:
命令:
gcc -I /usr/include/mysql/ -L /lib/ -lmysqlclient main.c
错误:
/tmp/ccT0KqUQ.o:main.c:(.text+0x2a): undefined reference to `mysql_init'
/tmp/ccT0KqUQ.o:main.c:(.text+0x2a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `mysql_init'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccT0KqUQ.o: bad reloc address 0x0 in section `.pdata'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld: final link failed: Invalid operation
collect2: error: ld returned 1 exit status
分析:
娘哎,我怎么会知道-I,-L,-l这些选项要放最后面呢???修改如下:
gcc main.c -I /usr/include/mysql/ -L /lib/ -lmysqlclient
错误2:
命令:
gcc main.c -I /usr/include/mysql/ -L /lib/ -lmysqlclient
错误:
collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
分析:
估计你是自己从mysql.com下载的connector。抱歉,你得用cygwin提供的。方法如下:
1.打开cygwin的setup.exe,一路next,直到到达"select packages"页
2.搜索libmysql
3.打开Database Default节点,选择"libmysqlclient-devel","libmysqlclient18"。
4.安装
二、具体流程
1./root/src/test/main.c
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mysql.h"void halt(MYSQL*, const char*);int main(int argc, char*argv[]) { MYSQL mysql; //初始化mysql if(!mysql_init(&mysql)) { halt(&mysql, "Mysql init failed"); } //连接 if(!mysql_real_connect(&mysql, "127.0.0.1", "root", "123456", "test", 3306, "", 0)) { halt(&mysql, "Can't connect to mysql server"); } //设置字符集 if(0 != mysql_set_character_set(&mysql, "utf8")) { halt(&mysql, "Can't set character"); } //查询test数据库的所有表 const char* sql = "SHOW TABLES"; if(0 != mysql_real_query(&mysql, sql, strlen(sql))) { char message[200]; sprintf(message, "Query Error:%s", sql); halt(&mysql, message); } //获得结果集 MYSQL_RES* res = NULL; if(!(res = mysql_use_result(&mysql))) { halt(&mysql, "Can't fetch result"); } //输出结果 MYSQL_ROW row; while(row = mysql_fetch_row(res)) { printf("table:%s\n", row[0]); } //释放资源 mysql_free_result(res); //关闭连接 mysql_close(&mysql); return 0;}void halt(MYSQL* mysql, const char* message) { fprintf(stderr, "message: %s\nerrno:%d\nerror:%s", message, mysql_errno(mysql), mysql_error(mysql)); exit(-1);}2.编译&链接
gcc main.c -I /usr/include/mysql/ -L /lib/ -lmysqlclient
3.运行
- cygwin下用mysql c api连接数据库详解
- Linux下用C语言API连接MySQL数据库
- Linux下用C语言API连接MySQL数据库
- Linux下用C语言API连接MySQL数据库
- Linux下C语言API连接MySQL数据库编译选项
- Linux 环境下使用 C API 连接 MYSQL 数据库
- Linux下用C语言API连接MySQL数据库编译选项
- 用C api 连接mysql数据库的 开发实例
- 用C api 连接mysql数据库的 开发实例
- C++使用C API 连接MYSQL数据库
- C API 通过ODBC 连接数据库MYSQL
- C API 通过ODBC 连接数据库MYSQL
- VS2010环境下 用MySQL Connector C 连接 MySql数据库
- VS2010环境下 用MySQL Connector C 连接 MySql数据库
- Linux下用C语言连接MySQL数据库
- Linux centos 7下: 用 C 语言连接 MySQL数据库
- linux下c语言连接mysql数据库
- CentOS下的C连接Mysql数据库
- 视频编解码学习之一:理论基础
- 《3g入门教科书》
- linux安装jdk1.6提示jdk-2000:1.6.0_41-fcs.x86_64 is already installed的解决方法
- 利用java操作Hadoop文件 /hdfs
- Java Web 高性能开发,第 2 部分: 前端的高性能
- cygwin下用mysql c api连接数据库详解
- hdu1269 迷宫城堡 (模板)
- 导航地图数据中道路拓扑网络的物理存储
- 【框架-MFC】MFC- Dialog(chenlu2):模式与无模式对话框
- HDU 1789 Doing Homework again
- ubuntu安装LAMP服务器
- 论软件项目质量管理
- uva 11584 - Partitioning by Palindromes(简单dp)
- linux之dup和dup2函数解析