mysql和VS2010 C++链接过程中出现的问题
PS:二者连接的过程主要参考这篇博客园文章,http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
这篇博客园的文章中的代码已经被我改好,附到下面去了!
1.在C++和mysql连接编译遇到的第一个问题:
error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_query@8,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_init@4,该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 _mysql_close@4,该符号在函数 _main 中被引用
解决方案:
这篇博客也阐述了.lib和.dll的区别,主要是VS2010 win32平台和Mysql的64位平台不兼容的问题。
http://blog.csdn.net/tspangle/article/details/43539721
2.无法启动该程序,因为计算机中缺少libmysql.dll
解决方案:
需把libmysql.dll放到项目bin\Debug文件夹中 3.Unable to connect the database,check your configuration!
主要原因是对mysql_real_connet的参数传递错误
该函数原型是:
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);
其中我的数据库的user="root",password="",哈哈,填写自己的就好啦,
db是建立的数据库的名字,我在mysql的命令窗口自己建立了一个mytest的数据库,路径为C:\ProgramData\MySQL\MySQL Server 5.7\Data
所以db="mytest"
其他的按照常规设置就好了,这几个是比较个性化的设置。
如果连接数据库的过程中出错了,可以查看C:\ProgramData\MySQL\MySQL Server 5.7\Data文件夹下的.err错误日志来查看错误原因,并且可以对症下药!
#include <windows.h>
#include "stdio.h"
#include "winsock.h"
#include "mysql.h"
#pragma comment (lib, "libmysql.lib")
#pragma comment (lib, "mysqlclient.lib")
int main()
{ MYSQL * con; //= mysql_init((MYSQL*) 0);
MYSQL_RES *res;
MYSQL_ROW row;
char tmp[];
//database configuartion
char dbuser[]="root";
char dbpasswd[]=""; // it must be changed
char dbip[]="localhost";
char dbname[]="mytest";
char tablename[]="tab";
char *query=NULL; int x;
int y;
int rt;//return value
unsigned int t; int count = ; printf("input x,y\n");
scanf("%d,%d",&x,&y);
fflush(stdin);
printf("input over\n"); con = mysql_init((MYSQL*) );
//con = mysql_init(&mysql); if ( con !=NULL && mysql_real_connect(con,dbip,dbuser,dbpasswd,dbname,,NULL,) )
{
if (!mysql_select_db(con,dbname))
{
printf("Select successfully the database!\n");
con ->reconnect = ;
query = "set names \'GBK\'";
rt=mysql_real_query(con,query,strlen(query));
if (rt)
{
printf("Error making query: %s !!!\n",mysql_error(con));
}
else
{
printf("query %s succeed!\n",query);
}
}
}
else
{
MessageBoxA(NULL,"Unable to connect the database,check your configuration!","",NULL);
} sprintf(tmp,"insert into %s values(%s,%d,%d)",tablename,"null",x,y); //注意如何向具有自增字段的数据库中插入记录 rt=mysql_real_query(con,tmp,strlen(tmp));
if (rt)
{
printf("Error making query: %s !!!\n",mysql_error(con));
}
else
{
printf("%s executed!!!\n",tmp);
} sprintf(tmp,"select * from %s",tablename);
rt=mysql_real_query(con,tmp,strlen(tmp));
if (rt)
{
printf("Error making query: %s !!!\n",mysql_error(con));
}
else
{
printf("%s executed!!!\n",tmp);
}
res = mysql_store_result(con);//将结果保存在res结构体中 while(row = mysql_fetch_row(res))
{
for(t=;t<mysql_num_fields(res);t++)
{
printf("%s ",row[t]);
}
printf(".............\n");
count ++;
} printf("number of rows %d\n",count);
printf("mysql_free_result...\n");
mysql_free_result(res);
mysql_close(con);
return ;
}
mysql和VS2010 C++链接过程中出现的问题的更多相关文章
- 嵌入式C语言自我修养 09:链接过程中的强符号和弱符号
9.1 属性声明:weak GNU C 通过 __atttribute__ 声明weak属性,可以将一个强符号转换为弱符号. 使用方法如下. void __attribute__((weak)) fu ...
- MySql数据库GROUP BY使用过程中的那些坑
MySql数据库GROUP BY使用过程中的那些坑 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. 特别注意: group by 有一个原则,就是 select 后面的所有 ...
- seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...
- 【图片+代码】:GCC 链接过程中的【重定位】过程分析
作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...
- 我在MySQL免安装版使用过程中遇到的问题记录
我的MySQL版本为:mysql-5.7.16-winx64 安装时间为:2016年5月10号 由于是免安装版,下载好压缩文件之后解压到特定目录下,再打开命令行运行几行命令即可. 在一次操作中,发现无 ...
- 数据库设计-Mysql数据库表设计的过程中几个关键点
一.表设计过程中应该注意的数据类型 1)更小的通常更好 控制字节长度 2)使用合适的数据类型: 如tinyint只占8个位,char(1024)与varchar(1024)的对比,char用于类似定长 ...
- Windows系统安装MySQL详细教程和安装过程中问题汇总(命令安装),更新时间2021-12-8
安装包下载 下载地址:https://dev.mysql.com/downloads/mysql/ 点击下载之后,可以选择注册Oracle账号,也可以跳过直接下载. 下载完成后,选择一个磁盘内放置并解 ...
- VS链接过程中与MSVCRT.lib冲突
vs代码生成有/MT,/MTd,/Md,/MDd四个编译选项,分别代表多线程.多线程调试.多线程DLL.多线程调试DLL. 编译时引用的lib分别为libcmt.li.libcmtd.lib.msvc ...
- 我在MySQL免安装版使用过程中遇到的问题记录【二】
跟上次问题不一样!这次是重新安装MySQL免安装版,各种文件搞对了还是错了也不清楚. 现在是:下载完安装包之后,按照现在的下方的代码,创建一个my-default.ini文件并放入下代码: [mysq ...
随机推荐
- Repeater动态添加行
<table class="table table-striped table-bordered table-hover"> <asp:Re ...
- Emmet 语法探析
Emmet 语法探析 Emmet(Zen Coding)是一个能大幅度提高前端开发效率的一个工具. 大多数编辑器都支持Snippet,即存储和重用一些代码块.但是前提是:你必须先定义 这些代码块. E ...
- Direct2D WIC绘制图片
绘制图片需要用到WIC,WIC的功能包括: 编解码图片.也可以自定义图片解码插件. 读取图片元数据. 图像处理(最高支持每通道32位). 内置支持一些流行的格式.包括:BMP v5, GIF 89a/ ...
- 认识Java数组(一)
特别想喜欢一个寓言故事: 噢,它明白了,河水既没有牛伯伯说的那么浅,也没有小松鼠说的那么深,只有自己亲自试过才知道!道听途说永远只能看到表面现象,只有亲自试过了,才知道它的深浅!!!!! 言归正传: ...
- 优酷播放器demo
<!DOCTYPE html> <html lang="en-US"> <head> <meta http-equiv="Con ...
- Oracle 11gR2 RAC 安装配置
1. 简介 Oracle RAC,全称real application clusters,译为"实时应用集群", 是Oracle新版数据库中采用的一项新技术,是高可用性的一种, ...
- javascript 跨域汇总
什么是跨域?当两个域具有相同的协议.相同的端口.相同的host时,那么我们就可以认为它们是相同的域.比如:http://www.example.com/a.html 和 http://www.exam ...
- JavaScript 获取 Div 的坐标
示例代码: <html> <head> <script> function CPos(x, y) { this.x = x; this.y = y; } /** * ...
- Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
解决方案: http://www.javatang.com/archives/2013/06/19/2701909.html
- WAS
http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Fin ...