VC连接MySQL
来源:互联网 发布:mac os 10.13下载地址 编辑:程序博客网 时间:2024/06/06 00:27
VC连接MySQL
问题
(1) 出现以下DEBUG信息时:
TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_close@4
TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_select_db@8
TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_real_connect@32
TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_init@4
解决方法:
在VC工程中project—>setting—>link—>object/library modules中添加:
libmysql.lib,然后编译就可以通过了
(2) 如果是在其他文件中引用的,在tools —>options —>directories—>show directories for :include files对应的项目中包含这些头文件。
(3) 编译通过后,在运行时弹出对话框找不到libmysql.dll文件,在所安装的mysql目录下的lib\debug目录下可以找到该文件。将其复制到编译好的release/debug目录下即可。或是通过“控制面板”—>“系统” —>“高级”—>“环境变量”—>“系统变量”—>“paht”中添加D:\mysql\lib\debug。注:d:\mysql为笔者安装的mysql目录。
(4) 如果出现以下编译问题
error C2146: syntax error : missing ';' before identifier 'fd'
这是mysql_com.h中出现的问题。如果将这句声明注释掉,下面会出现这个编译问题:
error C2065: 'SOCKET' : undeclared identifier
可以将int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,unsigned int timeout);该函数注释掉。或在包含mysql.h之前包含winsock.h.
则编译可以通过。
出现的原因分析:在用VC向导生成文档/视图时,在第四步中应该选择windows sockets。不然编译时就会出现上述问题。
最好的解决方式是在stdafx.h文件中添加#include <afxsock.h>,即可解决上述问题。
(5) 如果连接数据库时,出现不能连接的情况时,则应该将所在网络断开。出现问题的原因同上。
如果是数据库连接错误的话,则因为在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 int clientflag);
对于passwd应该设置为NULL。对于user可以随意设置。
原因暂时不清楚。
上述情况下只能对用户使用“root”和,就可以连接数据库了。
a. 如果以其他用户的身份,则需要添加相应的用户和密码。
步骤一:在命令行方式下运行MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
例如:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
步骤二:增加新用户
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"
例子:
(1)程序
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
//#include <afxsock.h>
#include "mysql.h"
int main(int avgc,char *argv[]){
MYSQL *conn_ptr;
conn_ptr = mysql_init(NULL);
if(!conn_ptr){
fprintf(stderr,"mysql init failed/n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr,"172.20.97.228","root","qwertyuiop","mysql",3306,NULL,0);
if(conn_ptr){
printf("Connection success/n");
}else{
printf("Connection failed/n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
(2)工程-连接-对象/模块中加入libmysql.lib
(3)将Mysql目录下的lib\debug下的libmysql.dll复制到程序编译后的debug文件夹里
- VC++连接MySQL数据库
- mysql和vc++连接
- VC++ ADO 连接 mysql
- VC连接mysql,笔记
- vc连接mysql
- VC连接MySQL
- VC连接MySQL
- VC连接mysql
- VC连接MySQL
- vc连接mysql
- VC连接MySQL
- VC连接MySQL
- VC连接MySQL
- VC连接MySql操作
- VC连接MySQL
- VC连接MYSQL
- VC连接MySQL
- VC连接MySQL
- HDU——2045——( 不容易系列之(3)—— LELE的RPG难题 )
- 【职场攻略】比你的工资更重要的十件事
- UNIX网络编程——TCP回射服务器/客户端程序
- 关于新建文件时的FIleNotFindException的报错
- 如何一步一步打造高可扩展性的应用程序?
- VC连接MySQL
- Design Pattern: Bridge 模式
- 网页设计中颜色代表的意义
- 高温下的人
- HDU——2044—— 一只小蜜蜂...
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
- Erlang list的++操作和append函数的底层实现
- 042详解 51-100题
- Android之Broadcast, BroadcastReceiver(广播)