windows 下C++操作Mysql的一些总结.doc_第1页
windows 下C++操作Mysql的一些总结.doc_第2页
windows 下C++操作Mysql的一些总结.doc_第3页
windows 下C++操作Mysql的一些总结.doc_第4页
windows 下C++操作Mysql的一些总结.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

windows 下C+操作Mysql的一些总结/windows 下C+连接Mysql: 首先完全安装Mysql(注意要选择完全安装,又不然将没有include和lib),并把Mysql的include目录和libopt引入 ,还有libmySQL.dll。/pdw2009/archive/2008/03/09/184869.html在用VC 连接Mysql 5.0 时出现如下错误C:/MYSQL/INCLUDE/mysql_com.h(116) : error C2146: syntax error : missing ; before identifier fdC:/MYSQL/INCLUDE/mysql_com.h(116) : error C2501: SOCKET : missing storage-class or type specifiersC:/MYSQL/INCLUDE/mysql_com.h(116) : error C2501: fd : missing storage-class or type specifiersC:/MYSQL/INCLUDE/mysql_com.h(180) : error C2065: SOCKET : undeclared identifierC:/MYSQL/INCLUDE/mysql_com.h(180) : error C2146: syntax error : missing ) before identifier sC:/MYSQL/INCLUDE/mysql_com.h(181) : error C2059: syntax error : )参考下面文章 /u/20080121/21/ac0ac04d-8071-456c-93fa-207ba1d37840.html在StdAfx.h 中加入如下几行#include winsock2.h#pragma comment(lib,ws2_32)mysql api用到socket的. 在头部加上这两句就好了就可以。 /解决Mysql链接错误:Client does not support authentication protocol requested by server; consider upgrading MySQL client 通过myodbc无法链接至MySQL的错误:Client does not support authentication protocol requestedby server; consider upgrading MySQL client官方的说法是MySQL 4.1 and up uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older clients. . 如果你升级mysql到4.1以上版本后遇到以上问题,请先确定你的mysql client 是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看解决方法了,因为MYSQL 在WINDOWS是client和server一起装上了的)请使用以下两种方法之一进入命令行下,转到MYSQL目录的BIN目录下,进入MYSQL命令行模式:例:d:mysqlbinmysql -uroot -p123 (用户root,密码123)其一: mysqlSET PASSWORD FOR root(用户名)localhost(主机地址) = OLD_PASSWORD(你的密码);其二:mysql UPDATE mysql.user SET Password = OLD_PASSWORD(newpwd) - WHERE Host = some_host AND User = some_user;mysql FLUSH PRIVILEGES;/ VC+连MySQL中要用到的MySQL函数:MYSQL* mysql_init(NULL) /初始化一个MYSQL对象,后面的操作要用到MYSQL *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 client_flag) /建立连接,db是要访问的数据库,unix_socket和client_flag通常为NULL就可以了.连接成功返回第一个参数,否则失败nt mysql_query(MYSQL *mysql, const char *stmt_str) /执行一个查询,成功时返回0MYSQL_RES *mysql_store_result(MYSQL *mysql) /获取查询返回的结果集,失败时返回0unsigned int mysql_num_fields(MYSQL_RES *result) /获取返回结果集的字段数量MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) /获取一行记录,并将移动到下个记录,返回NULL时则遍历完了所有行或出错.MYSQL_ROW类型是个字符串数组,下标为0,columnLength-1void mysql_free_result(MYSQL_RES *result) /释放结果集void mysql_close(MYSQL *mysql) /关闭连接/一个简单的例子:mysql_real_connect(mysql,localhost, root, rootpwd, test,3306,NULL,CLIENT_MULTI_STATEMENTS )当然我的测试数据库是test,里面有个user表。#include #include #include /必须在mysql.h之前,因为里面用到socket#include includemysql.h#include #pragma comment(lib,ws2_32)#pragma comment(lib, lib/libmysql.lib)MYSQL *mysql; /mysql连接char query1024; /查询语句void QueryAll() int t;MYSQL_RES *recordSet; /这个结构代表返回行的一个查询结果集MYSQL_ROW row; /一个行数据的类型安全(type-safe)的表示strcpy(query,select * from user); t=mysql_real_query(mysql,query,(unsigned int)strlen(query); if(t)printf(异常1: %sn,mysql_error(mysql); /*else printf(%s 构建成功 n,query);*/recordSet = mysql_store_result(mysql); long count_res = mysql_num_rows(recordSet); printf( %ld records found.n ,count_res); long count_field = mysql_num_fields(recordSet); MYSQL_FIELD * field; for(int i=0;iname); printf(n); while(row=mysql_fetch_row(recordSet) /获取下一条记录 for(t=0;tmysql_num_fields(recordSet);t+) /获取字段数目 printf(%st,rowt); printf(n); mysql_free_result(recordSet);/释放结果集bool InsertUser()int ret;strcpy(query,insert into user values(id,koko,123456789); ret=mysql_real_query(mysql,query,(unsigned int)strlen(query); if(ret)printf(异常2: %sn,mysql_error(mysql);return false;/*else printf(%s 构建成功 n,query);*/return true;bool UpdateUser()int ret;strcpy(query,update user set upass=weizengke where uname=koko); ret=mysql_real_query(mysql,query,(unsigned int)strlen(query); if(ret) printf(异常3: %sn,mysql_error(mysql);return false;/*else printf(%s 构建成功 n,query);*/return true;bool deleteUser()int ret;strcpy(query,delete from user where uname=koko); ret=mysql_real_query(mysql,query,(unsigned int)strlen(query); if(ret) printf(异常: %sn,mysql_error(mysql);return false;/*else printf(%s 构建成功 n,query);*/return true;void Init() /初始化mysql,并设置字符集 mysql=mysql_init(MYSQL*)0); if(mysql!=0 & !mysql_real_connect(mysql,localhost, root, rootpwd, test,3306,NULL,CLIENT_MULTI_STATEMENTS )printf( Error connecting to database: %sn,mysql_error(mysql);return ; strcpy(query,SET CHARACTER SET GBK); /设置编码 gbkint t=mysql_real_query(mysql,query,(unsigned int)strlen(query); if(t) printf(编码设置失败n);return ; int main()HINSTANCE hDll=LoadLibrary(libmySQL.dll);if (!hDll

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论