`
shaojiashuai123456
  • 浏览: 262663 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

c 连接Mysql数据库

阅读更多

   MysqlConnect.h

 

/********************************************************************
** 文件名:MysqlConnect.h
** 创建人:ss
** 完成日期:2010-12-08
********************************************************************/
#ifndef MYSQL_CONNECT_H
#define MYSQL_CONNECT_H

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <mysql/mysql.h> 
#include <netinet/in.h>
#include <arpa/inet.h> 
#include <malloc.h>


typedef struct MysqlConnect MysqlConnect;
typedef void *(*query_handler)(MYSQL_ROW);  
struct MysqlConnect
{
    int (*connect)(MysqlConnect *this);
    int (*query)(MysqlConnect *this,char *query,query_handler);
    int (*execute)(MysqlConnect *this,char *query);
    int (*close)(MysqlConnect *this);
    void (*destory)(MysqlConnect *this);
};
MysqlConnect* MysqlConnect_create(char *host,char *user_name,char *password,char *datebase,unsigned short port);
#endif

    MysqlConnect.c

  

#include "MysqlConnect.h"
typedef struct private_MysqlConnect private_MysqlConnect;
 
    //私有结构体
    struct private_MysqlConnect
    {
        MysqlConnect public;
        MYSQL mysql;     
    	  MYSQL_RES *result;
    	  MYSQL_ROW row;
    	  char host_name[100];
        char user_name[50];
        char password[50];
        char database[100];
        unsigned short port;
    };	
    //回调函数--用户接口,用来对查询出来的数据进行处理
    void* handler(MYSQL_ROW row)
    {
    	   printf("%s\n",row[1]);
    	   return NULL;
    }
    //连接数据库
    int MysqlConnect_connect(private_MysqlConnect *this)
    {
        if(mysql_real_connect(&this->mysql,this->host_name,this->user_name,this->password,this->database,this->port,NULL,0)) 
        {  
        	 // mysql_set_character_set(&this->mysql,"utf8");
        	  printf("success\n");
            return 1;
        }    
        else 
        {
        	  printf("connect error");
        		return 0;
        }
    }
    //查询数据库
    int MysqlConnect_query(private_MysqlConnect *this,char *query,query_handler  handler)
    {

            if(mysql_real_query(&this->mysql,query,strlen(query))==0) 
            {
    			    this->result = mysql_store_result(&this->mysql);
    			    while((this->row = mysql_fetch_row(this->result))!=NULL)
    	        {
                     handler(this->row);
              }
    			    mysql_free_result(this->result);
            }
            else 
            {
                printf("query error!\n");
                return 0;	
            }    		
        return 0;
    }
    //操作数据库
    int MysqlConnect_execute(private_MysqlConnect *this,char *query)
    {
            if(mysql_real_query(&this->mysql,query,strlen(query))==0) 
            {
                return 1;
            }
            else 
            {
                printf("query error!\n");
                return 0;	
            }    
    }
    //关闭连接
    int MysqlConnect_close(private_MysqlConnect *this)
    {
        mysql_close(&this->mysql);
    }
    //销毁连接
    void MysqlConnect_destory(private_MysqlConnect *this)
    {
        free(this);
    }
    
    //初始化
    MysqlConnect* MysqlConnect_create(char *host,char *user_name,char *password,char *database,unsigned short port)
    {
        private_MysqlConnect *this=malloc(sizeof(private_MysqlConnect));
        strcpy(this->user_name,user_name);
        strcpy(this->password,password);
        strcpy(this->host_name,host);
        strcpy(this->database,database);
        this->port=port;
        this->public.connect=(int (*)(MysqlConnect *))MysqlConnect_connect;
        this->public.query=(int (*)(MysqlConnect *,char *,query_handler ))MysqlConnect_query;
        this->public.execute=(int (*)(MysqlConnect *,char *))MysqlConnect_execute;
        this->public.close=(int (*)(MysqlConnect *))MysqlConnect_close;
        this->public.destory=(void (*)(MysqlConnect *))MysqlConnect_destory;
        return (MysqlConnect *)this;
    }
    
    
    int main()
    {
    	  //设置MYSQL数据库连接参数
    	  /*数据库所在主机ip,用户名,密码,登陆的数据库,端口(默认3306)*/
        MysqlConnect *conn=MysqlConnect_create("127.0.0.1","name","password","database",3306);
        
        
        //建立数据库连接
        conn->connect(conn);
        //操作数据库----做update,add 操作使用
        conn->execute(conn,"insert into key_word values(null,'ss','ssss',1,now())");
        //关闭数据库
        conn->close(conn);
        
        
        //连接数据库
        conn->connect(conn);
        //查询数据库
        conn->query(conn,"select * from key_word",(query_handler)handler);
        //关闭数据库
        conn->close(conn);
        
        //回收资源
        conn->destory(conn);
    }

 

   makefile

  

MysqlConnect:MysqlConnect.o
	gcc -g -o MysqlConnect MysqlConnect.o -I/include/mysql -L/lib/mysql -lmysqlclient -lz
MysqlConnect.o:MysqlConnect.c MysqlConnect.h
	gcc -g -c  MysqlConnect.c
clean:
	rm *.o

 

分享到:
评论

相关推荐

    c语言连接mysql数据库

    首先,要使用C语言连接MySQL数据库,你需要安装MySQL的C API库,这是MySQL提供的一套用于在C或C++中操作数据库的接口。在Windows环境下,如果你使用的是Visual Studio(VS)或者Visual C++ 6.0(VC++),你可以通过...

    Windows平台C连接MySQL数据库

    在Windows平台上,使用C语言连接MySQL数据库是一项常见的任务,尤其对于系统级开发或者需要底层控制的应用来说。本文将深入探讨如何在Windows环境下搭建C语言连接MySQL数据库的开发环境,并进行测试。 首先,我们...

    使用C语言连接MYSQL数据库源代码

    本项目“使用C语言连接MYSQL数据库源代码”旨在展示如何通过C语言实现对MySQL数据库的连接、查询、插入、更新和删除等操作。以下将详细介绍涉及的知识点: 1. **MySQL Connector/C**: 这是MySQL官方提供的C语言接口...

    C语言连接Mysql

    概括来说,本文档主要介绍了使用C语言连接Mysql数据库的详细步骤,从Mysql的安装到VC++中创建C程序,最后实现C语言连接Mysql数据库的过程。 一、Mysql安装 在开始连接Mysql数据库之前,需要先安装Mysql。安装Mysql...

    linux下C语言连接mysql数据库.docx

    Linux 下 C 语言连接 MySQL 数据库 Linux 操作系统下的 C 语言连接 MySQL 数据库是指在 Linux 平台上使用 C 语言编写程序来连接 MySQL 数据库,实现数据库的 CURD 操作(Create、Retrieve、Update、Delete)。本...

    linux下C语言连接mysql数据库

    在Linux环境下,使用C语言连接MySQL数据库是一项常见的任务,尤其对于开发系统级应用程序或需要与数据库交互的应用来说。本文将详细介绍如何在C程序中实现这一功能,并提供一个基本的示例代码。 首先,确保你已经...

    MyEclipse连接MySQL数据库报错解决办法

    1、在MyEclipse中连接MySQL数据库:依次点击window–&gt;show view–&gt;other–&gt;MyEclipse Database–&gt;DB Browser 图一:找到数据库连接选项 2、选中DB Browser,右键单击,并选择New一个数据连接的菜单,新建一个MySQL...

    C语言连接MySQL数据库.docx

    根据提供的文档信息,本文将详细解析如何使用C语言与MySQL数据库进行交互操作,重点在于连接数据库及执行数据插入操作。 ### 一、环境配置与基本概念 #### 1.1 环境准备 在开始编写C语言程序之前,需要确保安装了...

    c语言连接mysql数据库的实现方法

    C连接MySql5.1所需文件.rar 附带一个不错的例子: #include #include #include #include #include &lt;mysql&gt;/*注意要包含这个头文件*/ #pragma comment(lib,libmysql) /*定义了一些数据库连接需要的宏*/ #...

    linux下QT连接mysql数据库.doc

    QT 连接 MySQL 数据库在 Linux 平台下的实现 在 Linux 平台下,使用 QT 连接 MySQL 数据库是一种常见的应用场景。本文将详细介绍如何使用 QT 连接 MySQL 数据库,并提供了相关的代码示例。 首先,需要安装 MySQL ...

    Ubuntu10.04下C连接mysql数据库.docx

    在Ubuntu 10.04操作系统中,C语言连接MySQL数据库涉及多个步骤,包括安装必要的软件包、配置MySQL服务以及编写C程序进行连接。以下是详细的知识点解释: 1. **安装MySQL服务器和客户端**: 要在Ubuntu 10.04上安装...

    C++连接mysql数据库 源代码

    1. **MySQL C++ Connector**: 连接MySQL数据库时,通常会使用MySQL官方提供的C++ Connector,这是一个用于C++应用程序的数据库驱动程序,它提供了与MySQL服务器通信的接口。通过该接口,C++程序能够执行SQL查询,...

    用C语言连接mysql

    下面是一段简单的示例代码,用于演示如何使用C语言连接MySQL数据库: ```c #include #include #include "mysql.h" int main() { MYSQL mysql; // 创建MYSQL结构体实例 mysql_init(&mysql); // 初始化MYSQL...

    Ubuntu10.04下C连接mysql数据库[参考].pdf

    在Ubuntu 10.04操作系统中,C语言连接MySQL数据库是一个常见的需求,这涉及到一系列的配置和安装步骤。以下是一些关键知识点的详细说明: 1. **安装MySQL服务器**: - 安装`mysql-server-5.1`:在Ubuntu 10.04上,...

    基于C和C++连接MySQL数据库实现简单的学生(或职工)信息管理系统,源于大学时的数据库课程设计.zip

    使用C和C++连接MySQL数据库并进行常用的数据库操作。实现了简单的学生(或职工)信息管理系统,源于大学时的数据库课程设计.zip 使用C和C++连接MySQL数据库并进行常用的数据库操作。实现了简单的学生(或职工)信息...

Global site tag (gtag.js) - Google Analytics