Connection con("mysql","","root","mypassword"); //出错的地方
我怀疑是m_strServerName的问题, 我那是CString类型
可是当我改为空, 即localhost, 错误还是一样, 跟上面是一样的,
怎么办?
我怀疑是m_strServerName的问题, 我那是CString类型
可是当我改为空, 即localhost, 错误还是一样, 跟上面是一样的,
怎么办?
解决方案 »
- solaris 64位 与32位的 mysql链接问题
- about sql problem ,need help
- 按时间段查询的问题
- 强烈建议大版主将MYSQL和postgresql版块分开
- [mysqld-5.0.1-alpha-nt]string data,right truncated报错是什么原因引起来的?
- 一个奇怪的问题!
- 求助,启动mysql服务总提示路径错误
- mysql replication 同步机制
- mysql 的问题,请指教,谢谢!
- 我想向大数据方向发展 现在培训啥好 Linux OR Mysql OR Other
- MySQL怎么不能启动了?
- mysql 远程调用问题!!! 100分
除了mysql_get_client_info(), 在你执行任何其他API函数之前必须成功地完成mysql_real_connect()调用。参数指定如下: 第一个参数应该是一个现存MYSQL结构的地址。在调用mysql_real_connect()之前,你必须调用mysql_init()初始化MYSQL结构。参见下面的例子。
host值可以是一个主机名或一个IP地址。如果host是NULL或字符串"localhost",假定是到本地主机的一个连接。如果OS支持套接字(Unix)或命名管道(Win32),这将使用他们而不是TCP/IP与服务器连接。 user参数包含用户的MySQL登录ID。如果user是NULL,假定是当前用户。在Unix下,它是当前登录名。在Windows ODBC下,必须明确地指定当前用户名字。
passwd参数为user包含口令。如果passwd是NULL,只有在user表中对于有一个空白口令字段的用户的条目将被检查一个匹配。这允许数据库主管设置MySQL权限,使用户获得不同的口令,取决于他们是否已经指定一个口令。注意:不要试图在调用mysql_real_connect()前加密口令;口令加密自动被客户API处理。 db是数据库名。如果db不是NULL,连接将缺省数据库设置为这个值。
如果port不是0,值对于TCP/IP连接将用作端口号。注意host参数决定连接的类型。 如果unix_socket不是NULL,字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型。 client_flag值通常是0,但是在很特殊的情况下可以被设置为下列标志的组合:
标志名字 标志含义
CLIENT_FOUND_ROWS 返回找到的(匹配的)行数,不是受到影响的行数。
CLIENT_NO_SCHEMA 不允许db_name.tbl_name.col_name语法。这是为了ODBC兼容;如果你使用该语法,导致语法分析器产生一个错误,它是为在一些ODBC程序捕捉错误是有用的。
CLIENT_COMPRESS 使用压缩协议。
CLIENT_ODBC 客户是一个ODBC客户。这使mysqld变得对ODBC更友好。
CLIENT_SSL 使用 SSL 连接
CLIENT_IGNORE_SPACE 允许在函数名后空格
CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. 返回值
如果连接成功,一个 MYSQL*连接句柄。如果连接失败,NULL。对一个成功的连接,返回值与第一个参数值相同,除非你传递NULL给该参数。错误
CR_CONN_HOST_ERROR
不能连接MySQL服务器。
CR_CONNECTION_ERROR
不能连接本地MySQL服务器。
CR_IPSOCK_ERROR
不能创建一个IP套接字。
CR_OUT_OF_MEMORY
内存溢出。
CR_SOCKET_CREATE_ERROR
不能创建一个Unix套接字。
CR_UNKNOWN_HOST
不能找到主机名的IP地址。
CR_VERSION_ERROR
由于试图使用一个不同协议版本的一个客户库与一个服务器连接导致的一个协议失配。如果你使用一个非常老的客户库连接一个没有使用--old-protocol选项启动的新服务器,这就能发生。
CR_NAMEDPIPEOPEN_ERROR;
不能在 Win32 上创建一个命名管道。
CR_NAMEDPIPEWAIT_ERROR;
不能在 Win32 上等待一个命名管道。
CR_NAMEDPIPESETSTATE_ERROR;
不能在 Win32 上得到一个管道处理器。 范例
MYSQL mysql;mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}
不好意思了,
偶不用VC,
所以帮不了你了,在Delphi中也是这样做的,
不过我是引出的libmysql.dll申明
{
// TODO: Add your command handler code here
CString strServeName; //服务器名称
strServeName = GetIp("shiquan-admin");
MessageBox(strServeName,"服务器ip地址",MB_OK);
//以下连接mysql数据库
MYSQL mysql; mysql_init(&mysql);
if (!mysql_real_connect(&mysql,strServeName,"root","sqadmin","mysql",0,NULL,0))
{
MessageBox(mysql_error(&mysql),"错误",MB_OK);
}
//以上连接mysql数据库
}编译时通过, 警告如前, 运行时出现messagebox 显示内容如下:Access Denied for user:'[email protected]'(Using password: YES)呵呵, 好多了, 是不是授权限问题? :)
{
// TODO: Add your command handler code here
CString strServeName; //服务器名称
strServeName = GetIp("shiquan-admin");
MessageBox(strServeName,"服务器ip地址",MB_OK);
//以下连接mysql数据库
MYSQL mysql; mysql_init(&mysql);
if (!mysql_real_connect(&mysql,strServeName,"hr","","mysql",0,NULL,0)) //hr为用户名, 后面为密码
{
MessageBox(mysql_error(&mysql),"错误",MB_OK);
}
else MessageBox("您已成功连接mysql服务器","成功",MB_OK);
//以上连接mysql数据库
}呵呵, 我刚才没开服务, 哈哈, 渴望的最后一个成功对话框显示出来了, 呵呵, 谢谢哦, kisssssssss 个, 嘿嘿, 喷一脸口水先, :)