看了半天也没看懂 语法基本懂了的是细节(尤其是编译 ,用DOS命令,连接)还是 感觉没明白 把书上的代码搬到编辑器上 也不好使
怎么连接? 
说:把在安装目录下的mysql.h和include下的mysqlclient.lib 提取出 但我也没找到他们呀 没有这两个文件 我下的是5.1版是不是还少什么东西没下 还是安装的不对?
还有 有文件后连接的具体过程能不能给讲一下 
一步一步的 希望不要给我网址让我看 我看半天了没看明白 谢谢好心人了!!

解决方案 »

  1.   

    去这
    http://dev.mysql.com/downloads/connector/
    下载对应驱动
      

  2.   

    看下历史帖子吧,这里有个示例:http://topic.csdn.net/u/20080527/14/778A3955-914D-44C0-8F1B-2357ABCB2EBA.html
      

  3.   

    C API代码是与MySQL一起提供的。它包含在mysqlclient库中,并允许C程序访问数据库。MySQL源码分发版的很多客户端是用C语言编写的。如果你正在寻找能演示如何使用C API的示例,可参看这些客户端程序。你可以在MySQL源码分发版的客户端目录下找到它们。
      

  4.   

    下MYSQL的源代码。http://dev.mysql.com/downloads/mysql/5.1.html#source
      

  5.   

    mysql源代码 汗估计得研究会了
      

  6.   

    是呀 就那么几个步骤我也知道 但是没人告我具体怎么做 
    我现在 把mysql.h和mysqlclient.lib 找到了
    有人能告我一下怎么做吗 楼上的注册驱动 获得链接 准备语句 执行查询 关闭链接
    怎么整的?
      

  7.   

    简单示例:
    C#连接MySql数据库的方法-用MySQLDriverCS连接MySQL数据库。先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中。注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeC#连接MySql数据库代码:
    usingSystem;  
    usingSystem.Collections.Generic;  
    usingSystem.ComponentModel;  
    usingSystem.Data;  
    usingSystem.Data.Odbc;  
    usingSystem.Drawing;  
    usingSystem.Linq;  
    usingSystem.Text;  
    usingSystem.Windows.Forms;  
    usingMySQLDriverCS;  
    namespacemysql{  
    publicpartialclassForm1:Form{  
    publicForm1(){  
    InitializeComponent();  
    }  
    privatevoidForm1_Load(objectsender,EventArgse){  
    MySQLConnectionconn=null;  
    conn=newMySQLConnection(newMySQLConnectionString
    ("localhost","inv","root","831025").AsString);  
    conn.Open();  
    MySQLCommandcommn=newMySQLCommand("setnamesgb2312",conn);  
    commn.ExecuteNonQuery();  
    stringsql="select*fromexchange";  
    MySQLDataAdaptermda=newMySQLDataAdapter(sql,conn);  
    DataSetds=newDataSet();  
    mda.Fill(ds,"table1");  
    this.dataGrid1.DataSource=ds.Tables["table1"];  
    conn.Close();  
    }  
    }  
      

  8.   

    转:
    新建一Win32 Console Application的Project,把“c:\mysql\include”添加到编译选项的包含路径中(在Project Options中加入 /I "d:\mysql\include&quounter.cgol.net 魈迦缦拢?#include <windows.h>#include <stdio.h>#include <string.h>#include <mysql.h>int main( int argc, char * argv[] ){char szTargetDSN[] = "test";char szSqlText[500]="";char aszFlds[ 25 ][ 25 ];MYSQL * myData ;MYSQL_RES * res ;MYSQL_FIELD * fd ;MYSQL_ROW row ;int i,j,k;BOOL bCreate = TRUE;if ( (myData = mysql_init((MYSQL*) 0))//初始化数据结构&& mysql_real_connect( myData, NULL,//连接数据库"root", " your_password ", szTargetDSN,MYSQL_PORT, NULL, 0 ) ){if(bCreate){sprintf(szSqlText, //构造SQL语句"create table mytable "//新建一张表"(time datetime, s1 char(6), ""s2 char(11), s3 int, s4 int)");if (mysql_query( myData, szSqlText))//执行SQL语句{//执行SQL语句出错ErrLog( "Can't create table") ;mysql_close( myData ) ;return FALSE ;}}sprintf(szSqlText,"insert into mytable "//向表中插入数据"values('2000-3-10 21:01:30',"//注意时间的格式"'Test','MySQLTest',2000,3)");if (mysql_query( myData, szSqlText)){//执行SQL语句出错ErrLog( "Can't insert data to table") ;mysql_close( myData ) ;return FALSE ;}sprintf(szSqlText, "select * from mytable ");if (mysql_query( myData, szSqlText))//进行数据检索{//执行SQL语句出错mysql_close( myData ) ;return FALSE ;}else{res = mysql_store_result( myData ) ;//取得查询结果i = (int) mysql_num_rows( res ) ;//取得有效记录数printf( "Query: %s\n%ld records found:\n", szSqlText, i ) ;for ( i = 0 ; fd = mysql_fetch_field( res ) ;i++ )strcpy( aszFlds[ i ], fd->name ) ;//取得各字段名for (i=1; row = mysql_fetch_row( res ); )//依次读取各条记录{j = mysql_num_fields( res ) ;//取得记录中的字段数printf( "Record #%ld:-\n", i++ ) ;for ( k = 0 ; k < j ; k++ )//输出各字段的值printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ],(((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ;puts( "==============================\n" ) ;}mysql_free_result( res ) ;}}else{//连接数据库出错ErrLog( "Can't connect to the mysql server ") ;mysql_close( myData ) ;return FALSE ;}mysql_close( myData ) ;return TRUE ;}---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:---- 1. MYSQL *mysql_init(MYSQL *mysql)---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。新建的结构将在mysql_close()中释放。---- 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。---- 2. 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 int client_flag)---- 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_real_connect()成功返回。---- 参数mysql是mysql_init()的返回值;---- 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“localhost”;---- 参数user和passwd是MySQL数据库的合法用户和口令;
      

  9.   

    我用的是C语言 C#的看不懂  大家是不是没理解我在说什么 我再解释一下
    这是书上的小程序我取一部分基本功能:(查询数据库中的数据)
    #include "stdio.h"
    #include "mysql.h"
    main()
    {
        FILE *fp;
        char linebuffer[1000];
        cnost char *sep=":";
        char *prev_p;
        long next_p;
        char host[100];
        char user[50];
        char pass[50];
        char db[50];
        int choice;
        MYSQL mysql;
        MYSQL_RES *result;
        MYSQL_ROW row;
        MYSQL_FIELD *field;
        fp=fopen("expenses.conf","r");
        if(fp!=NULL)
        {
         memset(linebuffer,'\0',sizeof(linebuffer));
         memset(host,'\0',sizeof(host));
         memset(user,'\0',sizeof(user));
         memset(pass,'\0',sizeof(pass));
         memset(db,'\0',sizeof(db));
            fscanf(fp,"%s",linebuffer);
            if(strlen(linebuffer)!=0)
        {
         prev_p=linbuffer;
         strncpy(host,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
         prev_p=(char*)((long)prev_p+next_p+1);
         strncpy(user,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
         prev_p=(char*)((long)prev_p+next_p+1);
         strncpy(pass,prev_p,next_p=strstr(prev_p,sep)-prev_p_);
         prev_p=(char*)((long)prev_p+next_p+1);
            strcpy(db,prev_p);
        }
        fclose(fp);
        }
        mysql_init(&mysql);
        if(!mysql_real_connect(&mysql,host,user,pass,db,0,NULL,0))
        {
         exit();
        }
        printf("\n");
        printf("[1] view expense totals\n");
        printf("[2] add expense item\n");
        printf("[3] quit\n");
        printf("\n");
        printf("select an option from the list above:");
        scanf("%d",&choice);
        printf("\n");
        if(choice==1)
        {
        if(mysql_query(&mysql,"SELECT cname,SUM(amt) FROM cate,data WHERE care.cid=data.cid GROUP BY cname")!=0)
        {
        exit();
        }
        else
        {
        if(result=mysql_store_result(&mysql))
        {
        int numrecords=mysql_num_rows(result);
        int i;
        for(i=0;i<numrecords;i++)
        {
        row=mysql_fetch_row(result);
        printf("%s=%s\n",row[0],row[1]);
        }
        printf("\n");
        mysql_free_result(result);
        }
     }
        }
    mysql_close(&mysql);
         exit();
    }
    我用的是GCC(1)写完了后运行不好使不显示错误也不给运行没反应怎么回事 
    书上让保存成a.c保存了(保存后自动是a.c了) 书上要用mysql.h和mysqlclient.lib 我也找到了问题(2) 然我编译[user@host]$/usr/bin/gcc a.c-o a.bin -i/usr/local/mysql/include -l/usr/local/mysql/lib -lmysclient -lz 问题来了!
    意思我明白 但是我之前没用过编译编完C直接运行了 怎么编 用下什么软件吗?还是自带的软件 在哪找 是DOS吗?
    问题(3)假如我编译完了后怎么做 他要的mysql.h和mysqlclient.lib和我编的a.c都放到哪 随便放哪都行吗?(4)一旦编译成功应该有个a.bin文件 在命令提示下输入[user@host]$./a.bin 如果正确就连上了  那么连上了后是不是就进入了C语言程序了然后用命令提示输入C语言所要输入的数据?
    (5)最后 我上面的程序够吗 书上就给这个还要什么吗 或者头文件是不是少了什么
      

  10.   

    还有一个问题fp=fopen("expenses.conf","r"); 建个文件 .conf是什么文件 然后还有一句[user@host]$./expenses.bin 
    然后就输入了C语言命令了 不明白  
      

  11.   

    1 #include <mysql.h>   /*注意要包含这个头文件*/
      2 #include <string.h>
      3 #include <stdlib.h>
      4 #include <stdio.h>
      5 
      6 /*定义了一些数据库连接需要的宏*/  7 #define HOST "localhost"
      8 #define USERNAME "ABitNo"
      9 #define PASSWORD "ABitNo"
     10 #define DATABASE "abitno"
     11 
     12 /*这个函数用来执行传入的sql語句*/
     13 void exe_sql(char* sql) {
     14 
     15     MYSQL my_connection; /*这是一个数据库连接*/
     16     int res; /*执行sql語句后的返回标志*/
     17 
     18     /*初始化mysql连接my_connection*/
     19     mysql_init(&my_connection);
     20 
     21     /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
     22     返回一个值,返回不为空证明连接是成功的*/
     23     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
     24             0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/
     25 
     26         printf("数据库执行exe_sql连接成功!\n");
     27 
     28         /*这句话是设置查询编码为utf8,这样支持中文*/
     29         mysql_query(&my_connection, "set names utf8");
     30 
     31         /*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,
     32         这会返回一个int值,如果为0,证明語句执行成功*/
     33         res = mysql_query(&my_connection, sql);
     34 
     35         if (res) {/*现在就代表执行失败了*/
     36             printf("Error: mysql_query !\n");
     37             /*不要忘了关闭连接*/
     38             mysql_close(&my_connection);
     39         } else {/*现在就代表执行成功了*/
     40             /*mysql_affected_rows会返回执行sql后影响的行数*/
     41             printf("%d 行受到影响!\n\n", mysql_affected_rows(&my_connection));
     42             /*不要忘了关闭连接*/
     43             mysql_close(&my_connection);
     44         }
     45 
     46     } else {
     47         /*数据库连接失败*/
     48         printf("数据库执行exe_sql连接失败!\n");
     49     }
     50 }
     51 
     52 /*这个函数用来执行传入的sql語句,并打印出查询結果*/
     53 void query_sql(char* sql) {
     54     MYSQL my_connection; /*这是一个数据库连接*/
     55     int res; /*执行sql語句后的返回标志*/
     56     MYSQL_RES *res_ptr; /*指向查询结果的指针*/
     57     MYSQL_FIELD *field; /*字段结构指针*/
     58     MYSQL_ROW result_row; /*按行返回的查询信息*/
     59 
     60     int row, column; /*查询返回的行数和列数*/
     61     int i, j; /*只是控制循环的两个变量*/
     62 
     63     /*初始化mysql连接my_connection*/
     64     mysql_init(&my_connection);
     65 
     66     /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
     67     返回一个值,返回不为空证明连接是成功的*/
     68     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
     69             0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
     70 
     71         printf("数据库查询query_sql连接成功!\n");
     72 
     73         /*这句话是设置查询编码为utf8,这样支持中文*/
     74         mysql_query(&my_connection, "set names utf8");
     75 
     76         /*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,
     77         这会返回一个int值,如果为0,证明語句执行成功*/
     78         res = mysql_query(&my_connection, sql);
     79 
     80         if (res) { /*现在就代表执行失败了*/
     81             printf("Error: mysql_query !\n");
     82             /*不要忘了关闭连接*/
     83             mysql_close(&my_connection);
     84         } else { /*现在就代表执行成功了*/
     85             /*将查询的結果给res_ptr*/
     86             res_ptr = mysql_store_result(&my_connection);
     87 
     88             /*如果结果不为空,就把结果print*/
     89             if (res_ptr) {
     90                 /*取得結果的行数和*/
     91                 column = mysql_num_fields(res_ptr);
     92                 row = mysql_num_rows(res_ptr) + 1;
     93                 printf("查询到 %lu 行 \n", row);
     94 
     95                 /*输出結果的字段名*/
     96                 for (i = 0; field = mysql_fetch_field(res_ptr); i++)
     97                     printf("%s\t", field->name);
     98                 printf("\n");
     99 
    100                 /*按行输出結果*/
    101                 for (i = 1; i < row; i++) {
    102                     result_row = mysql_fetch_row(res_ptr);
    103                     for (j = 0; j < column; j++)
    104                         printf("%s\t", result_row[j]);
    105                     printf("\n");
    106                 }
    107 
    108             }
    109 
    110             /*不要忘了关闭连接*/
    111             mysql_close(&my_connection);
    112         }
    113     }
    114 }
    115 
    116 int main(int argc, char *argv[]) {
    117     /*测试下向里面插入数据*/
    118     char *exe = "insert into abitno values('ABitNo','http://ABitNo.LinPie.com');";
    119     exe_sql(exe);
    120 
    121     /*测试下查询*/
    122     char *query = "select * from abitno;";
    123     query_sql(query);
    124 
    125     return 0;
    126 }
      

  12.   

    c我这里有现成例子可以参考:http://download.csdn.net/source/1761623