c语言mysql查询,c语言数据库查询

本文目录一览:

C语言中,mysql语句,如何实现两表的模糊查询?

c语言中的 单引号都需要反编译的

也就是\’

这个要注意,其他应该都是一样的。。

要不你单点运行,获取c中运行后的 sql语句 。。

然后再MYsql 里运行。。 看能成功不

c语言怎么把链表数据写进mysql

方法如下:

1.头文件:

#include

#include

#include//这个是必需要包含的,下面对mysql的所有操作函数,都出自这里

2.定义一个MYSQL变量:

MYSQLmysql;

这里MYSQL是一个用于连接MySql数据库的变量。

在后面对mysql数据库的操作中,我们就用这个MYSQL变量作为句柄的。

3.定义数据库参数:

charhost[32]=”localhost”;

charuser[32]=”username”;

charpasswd[32]=”pwd”;

chardbname[32]=”testdb”;

4.数据库操作

1).初始化数据库:

mysql_init(mysql);

2).连接数据库:

mysql_real_connect(mysql,host,user,passwd,dbname,0,NULL,0);

我们在操作时,可以对以上的函数进行if测试,如果初始化或者连接出错,作出相应提示,以便调试。

5.对数据库的操作:

Mysql_query(mysql,“select*fromtestdbwherecondition”);

我们在实际操作中,为了更方便的使用程序中的某些变量,我们将会用到一个函数:

intsprintf(char*str,constchar*format,?);

这个函数用来格式化我们的字符串,然后将变量按照给你的格式,赋给第一个参数。

我们使用这个方法方法可以很方便的使用我们的变量来对数据库进行操作。例如我们将要进行数据库的查询操作,我们就可以这样使用:

sprintf(sql,”select*fromtestdbwhereusername=‘%s’”,u_name);

然后使用mysql_query(mysql,sql)进行查询。

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

c语言调用数据库mysql5.6,数据查询后怎样读取

读取出来的 char 字符么。

atoi 一下 不就变成int了么。

你这个属于存练习 代码. 逻辑比较混乱. 慢慢来吧.

我写过的用 vector 和 map 做的 mysql读取的结果集的封装 你可以看看.

用C语言如何对MySQL数据库进行操作

有时为了性能,我们会直接用C语言来开发相关的模块,尤其在我们的web应用中,虽然PHP、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口,然后再编译到php里面,供php脚本直接使用,这方面的话题就不多说了,下面主要说一下在Linux下如何用C语言连接MySQL数据库,并且读取里面的数据返回,同时如何进行编译。if defined(_WIN32) || defined(_WIN64)为了支持windows平台上的编译#includewindows.h#endif#includestdio.h#includestdlib.h#includemysql.h我的机器上该文件在/usr/local/include/mysql下定义MySQL数据库操作的宏,也可以不定义留着后面直接写进代码defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相当于char*argv[]{MYSQL mysql,*sock;定义数据库连接的句柄,它被用于几乎所有的MySQL函数MYSQL_RES *res;查询结果集,结构类型MYSQL_FIELD *fd ;包含字段信息的结构MYSQL_ROW row ;存放一行查询结果的字符串数组char qbuf[160];存放查询sql语句字符串if(argc!=2){//检查输入参数fprintf(stderr,usage:mysql_selectuserid\n\n);exit(1);}mysql_init(mysql);if(!(sock=mysql_real_connect(mysql,localhost,dbuser,dbpwd,9tmd_bbs_utf8,0,NULL,0))){fprintf(stderr,Couldn’tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));if(mysql_query(sock,qbuf)){fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn’tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d’susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0]));puts(queryok!\n);}mysql_free_result(res);mysql_close(sock);exit(0);return0;为了兼容大部分的编译器加入此行}编译的时候,使用下面的命令gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选,根据您的环境情况运行的时候,执行下面的命令./mysql_select 1将返回如下结果:numberoffieldsreturned:1Theruserid#1’susernameis:Michaelqueryok!上面的代码我想大部分都能看明白,不明白的可以参考一下MySQL提供的有关C语言API部分文档源码天空,各个函数都有详细说明,有时间我整理一份常用的API说明出来。

mysql查询语句 C语言

#ifdef WIN32

#include windows.h

#include odbcinst.h

#include sqlext.h

#else

#include mysql.h

#include unistd.h

#define SQLHANDLE static MYSQL

#endif

#include stdarg.h

#include stdlib.h

#include stdio.h

#include string.h

SQLHANDLE hDBEnv, hDBC;

int DB_Open(char * dbcn, char * usr, char * pwd)

{

int r;

#ifdef WIN32

r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, hDBEnv);

if(r) return 0;

r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,

(void*)SQL_OV_ODBC3,0);

if(r) return 0;

r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, hDBC);

if(r) return 0;

r = SQLConnect(hDBC,

(unsigned char *)dbcn, strlen(dbcn),

(unsigned char *)usr, strlen(usr),

(unsigned char *)pwd, strlen(pwd));

return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;

#else

mysql_init(hDBC);

MYSQL * rx = mysql_real_connect(

hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);

if(!rx) return 0;

return 1;

#endif

}//end DB_Open

int DB_Exec(char * sql)

{

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, hStatement);

SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));

SQLCloseCursor(hStatement);

SQLFreeHandle(SQL_HANDLE_STMT, hStatement);

hStatement = NULL;

#else

mysql_real_query (hDBC, sql, strlen(sql));

#endif

return 1;

}//end DB_Exec

int DB_Close(void)

{

#ifdef WIN32

SQLDisconnect(hDBC);

SQLFreeHandle(SQL_HANDLE_DBC, hDBC);

SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);

#else

mysql_close(hDBC);

#endif

return 1;

}//DB_Close()

#ifndef WIN32

typedef struct tagMySQLRecordset {

MYSQL_RES * hRecord;

void * * row;

int * size;

int cols;

} MYSQLRecordset;

#endif

void DB_CleanQuery(void *hRecordset)

{

if(!hRecordset) return;

#ifdef WIN32

__try {

SQLCloseCursor(hRecordset);

SQLFreeHandle(SQL_HANDLE_STMT, hRecordset);

hRecordset = NULL;

}__finally{

return;

}//end try

#else

MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;

mysql_free_result (hRec-hRecord);

free(hRec-row); hRec-row = NULL;

free(hRec-size); hRec-size = NULL;

free(hRec); hRec = NULL;

#endif

}//end DB_CleanQuery

int DB_Next(void * hRecordset)

{

int r=0; if(!hRecordset) return 0;

#ifdef WIN32

r = SQLFetch(hRecordset);

r = r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

DB_CleanQuery(hRecordset);

}//end if

#else

MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;

MYSQL_ROW row = mysql_fetch_row (hRec-hRecord);

if(row) {

for(int i=0; ihRec-cols; i++) {

memcpy(hRec-row[i], row[i], hRec-size[i]);

}//next i

r = 1;

}else{

DB_CleanQuery(hRecordset);

r = 0;

}//end if

#endif

return r;

}//end DB_Next

int DB_params_count(const char * fmt)

{

int i=0, j=0;

while(fmt[i]) {

if(fmt[i]==’%’) j++;

i++;

}//end while

return j;

}//end DB_params_count

void * DB_Query(char *sql, const char *fmt, …)

{

int r=0;

int cols = DB_params_count(fmt);

if(cols1) return NULL;

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, hStatement);

r = SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));

r = r==SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

return NULL;

}//end if

#else

r = mysql_real_query (hDBC, sql, strlen(sql));

if(r) return NULL;

MYSQL_RES * rec = NULL;

rec = mysql_store_result (hDBC);

if(!rec) return NULL;

MYSQLRecordset * hStatement

= (MYSQLRecordset *)malloc(sizeof(MYSQLRecordset));

if(!hStatement) return NULL;

memset(hStatement, 0, sizeof(MYSQLRecordset));

hStatement-hRecord = rec;

hStatement-cols = cols;

hStatement-row = (void **)malloc(cols * sizeof(void *));

memset(hStatement-row, 0, cols * sizeof(void *));

hStatement-size = (int *)malloc(cols * sizeof(int));

memset(hStatement-size, 0, cols * sizeof(int));

#endif

va_list ap; va_start(ap, fmt);

void * var; char buf[32];

int i=0,j=0,k=0,sz=0; char c=0;

int len = strlen(fmt); int bad=1;

#ifdef WIN32

int col=1;

#else

int col=0;

#endif

while(fmt[i]) {

c = fmt[i++];

if(c != ‘%’) continue;

c = fmt[i++];

var = va_arg(ap, void *);

if(c == ‘d’) {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_SLONG, var, 4,NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sizeof(long);

#endif

col++;

continue;

}//end if

if(c == ‘f’) {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_FLOAT, var, 4,NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sizeof(float);

#endif

col++;

continue;

}//end if

memset(buf, 0, 32); bad=1;

for(j=i-1; jlen; j++) {

c = fmt[j];

if(c=’0′ c=’9′) buf[j-i+1]=c;

if(c==’s’) {bad=0; k=j+1; break;}

}//next j

if(bad) return NULL;

sscanf(buf, “%d”, sz);

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_CHAR, var, sz, NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sz;

#endif

col++;

i = k;

}//end while

va_end(ap);

return hStatement;

}//end DB_Rec

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/188298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-28 13:29
下一篇 2024-11-28 13:29

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28

发表回复

登录后才能评论