zoukankan      html  css  js  c++  java
  • <mySql完全手册>2011031401

    【实践】

    MySql和C部分实践

    环境:

    Vs2005+Xp+Sp3

    MySql Server 5.0

    库文件和头文件路径分别:

    D:\Program Files\MySQL\MySQL Server 5.0\lib\debug

    D:\Program Files\MySQL\MySQL Server 5.0\include

    实践过程:

    1、新建Windows32 Console程序

    2、引用头文件#include <mysql>

    编译,出现错误,找不到头文件~

    在Xp环境变量中添加路径,再编译,仍然找不到~

    看来只有在vs2005的环境配置中处理,实际操作:

    工具->选项->项目和解决方案->VC++目录,这里有一个库文件路径和头文件路径,分别添加相应的路径

    继续编译,错误,mysql_com.h中找不到my_socket类型~

    具体指向这句话:int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
               unsigned int timeout);

    网上查询需要#include <winsock.h>在#include <mysql.h>前面,ok,添加了,细细想下,应该还有问题:没有引用库文件

    随后,在当前项目属性中,找到:配置属性->链接器->输入->附加依赖项

    录入:D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib wsock32.lib

    杯具,错误Lnk1104,找不到D:\program.obj~

    其实最开始我直接拷贝的路径,串"D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib

    这个的错误也是上面那个,后面改成无引号的,还是这个错~

    linker高级命令中显示如下:你会发现路径错误(红色部分)

    /OUT:"d:\My Documents\Visual Studio 2005\Projects\LibMath\Debug\TestMysql.exe" /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\TestMysql.exe.intermediate.manifest" /DEBUG /PDB:"d:\My Documents\Visual Studio 2005\Projects\LibMath\debug\TestMysql.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 /ERRORREPORT:PROMPT "D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib wsock32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

    最后查询到,在引用库需要""来锁定完整路径的库,

    最后在附加依赖项保存是这个串:"D:\Program Files\MySQL\MySQL Server 5.0\lib\debug\mysqlclient.lib" wsock32.lib

    编译,出现错误lnk2005,lnk2019,这个错误是运行库问题,浏览下项目属性,发现当前运行库为MDd;那么我只能改成MTd

    编译,成功了~

    F5运行,cmd窗口出现“Error in connection:null”字符

    ok,检查了,是帐号错误,本来是root,在这里用成sa了

    修改成root,编译运行,出现字符"Query executed successfully"

    到这里基本上算运行了一个正常的实践流程,至少在链接mySql server和简单查询上已经成功了~hoho

    下面贴出h和cpp文件:

    1 // stdafx.h : 标准系统包含文件的包含文件,
    2  // 或是经常使用但不常更改的
    3  // 特定于项目的包含文件
    4  //
    5  
    6  #pragma once
    7
    8
    9  #define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
    10 #include <stdio.h>
    11 #include <tchar.h>
    12
    13 #include <winsock.h>//这个文件在mysql.h的前面哈
    14
    15  // TODO: 在此处引用程序需要的其他头文件
    16  #include <mysql.h>
    1 // TestMysql.cpp : 定义控制台应用程序的入口点。
    2 //
    3
    4 #include "stdafx.h"
    5
    6
    7
    8 int _tmain(int argc, _TCHAR* argv[])
    9 {
    10 MYSQL mysql;
    11 MYSQL_RES * result;
    12
    13 mysql_init(&mysql);
    14
    15 if (!(mysql_real_connect(&mysql ,"localhost" ,"root" ,"sa" ,"library" ,0 ,NULL ,0)))
    16 {
    17 fprintf(stderr, "Error in connection:%s\n");
    18 return 0;
    19 }
    20
    21 if (mysql_query(&mysql ,"Select * from tbmembers") != 0)
    22 {
    23 fprintf(stdout ,"Error in query\n");
    24 }
    25 else
    26 {
    27 fprintf(stdout ,"Query executed successfully\n");
    28 }
    29
    30 mysql_close(&mysql);
    31
    32 return 0;
    33 }

    好,这个算结束了本次实践过程的记录

    结论:

    1、mysqlclient.lib运行库是MTd,多线程静态库;对应Release版本就是MT

    2、mysql.h头文件还是依赖winsock.h,说明其开发的基础还是在sock,属于sock扩展应用

  • 相关阅读:
    Android:JNI之Java和C层的相互调用及多线程的回调实现
    高通sdm845_la2.0源码编译及使用QFIL刷机
    git常用指令
    Bouml快速使用指南
    Linux内核数据结构之kfifo详解
    输入系统:进程间双向通信(socketpair+binder)
    Android : 跟我学Binder --- (6) JAVA实现
    【LeetCode】167. Two Sum II
    【LeetCode】1. Two Sum
    【LeetCode】206. Reverse Linked List
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/1983836.html
Copyright © 2011-2022 走看看