C/C++连接查询MYSQL

1. [代码][C/C++]代码

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main()
{
    MYSQL mysql;//连接数据库的变量
    MYSQL_RES *res;//存放查询结果的变量
    MYSQL_ROW row;
    char *query;
    int t,r;
    char *server= "localhost";
    char *user = "root";
    char *password="test";
    char *database = "test";
    mysql_init(&mysql); //连接数据库前,必须调用此函数初始化变量
    /**
     * MYSQL *mysql_init(MYSQL *mysql)
     * 传入MYSQL类型的指针
     * 返回一个被初始化的MYSQL*句柄
     * 在内存不够的情况下,返回NULL
     */
    if(!mysql_real_connect(&mysql,server,user,password,database,0/*TCP IP端口*/,NULL/*Unix socket连接类型*/,0/*运行成ODBC数据库的标记*/))
    {
        printf("Error connection to database:%s/n",mysql_error(&mysql));
    }else
        printf("Connected.../n");
    query = "select * from t1";
    printf("query execute:%s/n",query);
    t = mysql_real_query(&mysql,query,(unsigned int) strlen(query));
    /**
     *
     * int STDCALL mysql_real_query(MYSQL *mysql,const char *q, unsigned int length);
     * 执行任何SQL查询语句进行查询。
     * mysql是我们前面用过的变量,q是SQL查询语句,length是这个查询语句的长度。
     */
    if(t)
    {
        printf("Error making query:%s/n",mysql_error(&mysql));
    }else
        printf("[%s] made.../n",query);
    res = mysql_store_result(&mysql);
    /**
     * mysql_store_result(MYSQL *mysql)
     * 立刻检索全部结果
     *
     * mysql_use_result(MYSQL *mysql)
     * 初始化一个一行一行地结果集合的检索
     */
    while(row = mysql_fetch_row(res))
    {
        /**
         * MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
         * 检索行
         */
        for(t=0;t<=mysql_num_fields(res);t++)
        {
            printf("%s",row[t]);
        }
        printf("/n");
    }
    printf("mysql_free_result.../n");
    mysql_free_result(res);
    /**
     * mysql_free_result()
     * 释放由它使用的内存。
     */
    sleep(1);
    //execute the insert query
    query = "insert into t1(id,name) values(3,‘kunp‘)";
    t = mysql_real_query(&mysql,query,(unsigned int) strlen(query));
    if(t)http://www.huiyi8.com/hunsha/hanshi/
    {韩式婚纱照片
        printf("Error making query:%s/n",query);
        mysql_error(&mysql);
    }
    else printf("[%s] made.../n",query);
    mysql_close(&mysql);
    /**
     * void mysql_close(MYSQL *mysql)
     * 传入MYSQL类型的指针
     * 功能,关闭一个服务器连接,并释放与连接相关的内存i
     */
    return 1;
}
//编译:gcc testsql.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -o testsql
2. [代码][C/C++]代码   
#include <stdlib.h>
#include <stdio.h>
#include <mysql/mysql.h>
int main(void){
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
MYSQL *conn_ptr;
int result;//query result
int iTableRow,iTableCol,i,j;
 conn_ptr = mysql_init(NULL);
 if (!conn_ptr)
 {
        fprintf(stderr,"mysql_init failed!\n");
         return (-1);
 }
 conn_ptr = mysql_real_connect(conn_ptr,"127.0.0.1","root","123456","mysql",3306,0,NULL);
 if (conn_ptr)
 {
         printf ("connection succeed!\n");
 }
 else{
         printf ("connection failed!\n");
        return (-2);
 }
result = mysql_query(conn_ptr,"select * from test.tbl_user");
if(result){
        printf(stderr,"select error %d: %s !\n",mysql_errno(conn_ptr),mysql_error(conn_ptr));//
        return EXIT_FAILURE;
}
res_ptr = mysql_store_result(conn_ptr);//集合
if( res_ptr )
        {
            iTableRow = mysql_num_rows(res_ptr);//行
            iTableCol = mysql_num_fields(res_ptr);//列
            for(i=0; i<iTableRow; i++)
            {
              sqlrow = mysql_fetch_row(res_ptr);
              for(j=0; j<iTableCol; j++)
              {
                printf("%-8s  ",sqlrow[j]);//字符串向左靠,右补空格
              }
              printf("\n");
            }
 mysql_free_result(res_ptr);//完成对数据的所有操作后,调用此函数来让MySQL库清理它分配的对象
  mysql_close(conn_ptr);
 
 printf ("connection close!\n");
 return 0;
 }
 
 编译:gcc -o mydbcon -I /usr/include/mysql/ -L /usr/lib/mysql -lmysqlclient mysql.c
 
 运行:./mydbcon

时间: 2024-08-29 21:06:53

C/C++连接查询MYSQL的相关文章

Mysql 表连接查询

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

MySQL:连接查询

每个实体,一个表 当一个业务需要多个实体的数据,显然需要多张表在一起使用,即将多张表的记录连接起来. 1. 总体思路: 先将所有数据按照某种条件,连接起来,再进行筛选处理. 2. 分类方式: 根据连接的条件不同,分为一下几类: ① 内连接(Inner):要求连接的多个数据都必须存在,才能进行连接. [举个栗子]如下三张表,分别记录了老师的信息,班级信息,以及老师们的代课情况. 此时,若想获得所有老师的代课信息,'韩信'在表3中有与之配对的记录(内连接) 但发现孙武没有带过课,即表1中的'孙武'在

mysql的查询、子查询及连接查询

一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数)  1.where常用运算符: 比较运算符 > ,  < ,=  , != (< >),>=   ,   <= in(v1,v2..vn) between v1 and v2    在v1至v2之间(包含v1,v2) 逻辑运算符 not ( ! )  逻辑非 or ( || )    逻辑或 and ( &&am

MySQL常见连接查询

在实际应用中,由于不同的业务需求,一般的select查询语句无法满足要求.所以就需要了解一些MySQL的高级查询方式 内连接 inner join 典型的连接查询,有相等(=)连接和不等(<>)连接.如:现在有产品表及供应商表 产品表: 供应商表: 如果现在有个需求:查询产品表中产品对应的供应商公司名称及地址.那么就可以根据产品表中的供应商ID进行连接查询 这样根据两个表中供应商ID相同的条件,就查询出想要的数据.注:连接查询默认为inner join,所以inner可省略不写 左连接 lef

MySql基本查询、连接查询、子查询、正则表达查询讲解

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SELECT语句来查询数据的.在这一章中将讲解的内容包括.1.查询语句的基本语法2.在单表上查询数据3.使用聚合函数查询数据4.多表上联合查询5.子查询6.合并查询结果7.为表和字段取别名8.使用正则

【mysql】连接查询

连接查询: 将多个表的记录连接起来 [mysql]连接查询

mysql连接查询经典小例题

mysql连接查询: Mysql连接查询支持多表连接 对同一张表可以重复连接多次(别名在多次连接同一张表时很重要) 例题1: 下面有2张表 teams表 比赛结果表:result 问题: 得出一张表: 主队,客队,比赛成绩,比赛时间 方法一:(子查询和连接查询混合) step1: select result.id, t_name as h_name,match_time,result from teams join result on teams.t_id=result.h_id step2:

Mysql连接查询介绍

场景: 从下表中得到一个学生列表.要求是,展示:学生,性别,班级名字 此查询需要不单从学生表获取数据,还需要从班级表获取数据,此时就需要: 连接查询:join     连接:多个表记录之间的连接~! 语法: from 表名1 join 表名2 on 连接条件 select stu_name,gender,class_id,class_name from select_student join select_class  on select_student.class_id=select_clas

mysql连接查询,封装mysql函数

连接查询 交叉连接语法: select  * | 字段列表 from 表1  cross join 表2 内连接: select *|字段列表 from 左表 inner join 右表 on 左表.字段 = 右表.字段; (inner可以省略) 左外连接(左连接)   select *|字段列表 from 左表 left outer join 右表 on 左表.字段 = 右表.字段; (outer可以省略) 右外连接(右连接) select *|字段列表 from 右表 left outer