C语言访问MySQL

时间:2022-11-14 09:15:28
用C来访问本机上的MySQL数据库是否必须在机器上启动MYSQL服务?

然后再用连接函数来连接这个数据库?

像其它数据一样用ODBC来访问?

12 个解决方案

#1


如果我给客户写一个把信息存在MYSQL数据库中的程序,不至于让客户安装一个MYSQL程序吧
希望像ACCESS那样,只要有一个.mdb文件就行了。

#2


刚刚查了一下,好像必须得装什么驱动之类的。

如果是在Linux下,上面的问题如何解决?也有相关驱动要装吗?还是必须要启动MYSQL服务?

#3


必须启动mysql服务
想要mdb那种文件级的,建议你用下sqlite。

#4


必须启动mysql服务
想要mdb那种文件级的,建议你用下嵌入式MySQL

#5


#include <stdio.h>
#include <stdlib.h>
#include "/usr/local/mysql/include/mysql/mysql.h"  
/*注意哦,上面必须是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*/

int main(int argc, char *argv[]) 
{
MYSQL my_connection;

int res;

mysql_init(&my_connection); 

/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)) 
{
    printf("Connection success\n");
    res = mysql_query(&my_connection, "insert into children values(10,'Ann',5)");

    if (!res) 
    {
        printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
    } 
    else 
    {
    //分别打印出错误代码及详细信息
        fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
    }
    mysql_close(&my_connection);


else 
{
    fprintf(stderr, "Connection failed\n");

    if (mysql_errno(&my_connection)) 
    {
        fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}
/////////////////////////////////////////////
代码写完了,要编译哦
#gcc -o insert insert.c -L /usr/local/mysql/lib/mysql/*.a -lz

#6


该回复被版主删除

#7


该回复被版主删除

#8



http://blog.csdn.net/hzhxxx/archive/2006/12/14/1443031.aspx

#9


启动MYSQL服务是必须的。

#10


引用 9 楼 yueliangdao0608 的回复:
启动MYSQL服务是必须的。
一直启动不开 表示压力很大

#11


其实我也是想用文件级的

#12


引用楼主 phable 的回复:
用C来访问本机上的MySQL数据库是否必须在机器上启动MYSQL服务?

然后再用连接函数来连接这个数据库?

像其它数据一样用ODBC来访问?

服务是必须要启动的,因为你的是客户端程序。
用C来访问,可以是C-api,也可以是ODBC api。按照你个人喜好。

#1


如果我给客户写一个把信息存在MYSQL数据库中的程序,不至于让客户安装一个MYSQL程序吧
希望像ACCESS那样,只要有一个.mdb文件就行了。

#2


刚刚查了一下,好像必须得装什么驱动之类的。

如果是在Linux下,上面的问题如何解决?也有相关驱动要装吗?还是必须要启动MYSQL服务?

#3


必须启动mysql服务
想要mdb那种文件级的,建议你用下sqlite。

#4


必须启动mysql服务
想要mdb那种文件级的,建议你用下嵌入式MySQL

#5


#include <stdio.h>
#include <stdlib.h>
#include "/usr/local/mysql/include/mysql/mysql.h"  
/*注意哦,上面必须是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*/

int main(int argc, char *argv[]) 
{
MYSQL my_connection;

int res;

mysql_init(&my_connection); 

/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)) 
{
    printf("Connection success\n");
    res = mysql_query(&my_connection, "insert into children values(10,'Ann',5)");

    if (!res) 
    {
        printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
    } 
    else 
    {
    //分别打印出错误代码及详细信息
        fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
    }
    mysql_close(&my_connection);


else 
{
    fprintf(stderr, "Connection failed\n");

    if (mysql_errno(&my_connection)) 
    {
        fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}
/////////////////////////////////////////////
代码写完了,要编译哦
#gcc -o insert insert.c -L /usr/local/mysql/lib/mysql/*.a -lz

#6


该回复被版主删除

#7


该回复被版主删除

#8



http://blog.csdn.net/hzhxxx/archive/2006/12/14/1443031.aspx

#9


启动MYSQL服务是必须的。

#10


引用 9 楼 yueliangdao0608 的回复:
启动MYSQL服务是必须的。
一直启动不开 表示压力很大

#11


其实我也是想用文件级的

#12


引用楼主 phable 的回复:
用C来访问本机上的MySQL数据库是否必须在机器上启动MYSQL服务?

然后再用连接函数来连接这个数据库?

像其它数据一样用ODBC来访问?

服务是必须要启动的,因为你的是客户端程序。
用C来访问,可以是C-api,也可以是ODBC api。按照你个人喜好。