c 基于mysql编程_linux-基于MYSQL的C程序编程

函数

连接数据库:

mysql_real_connect(xxxx,"主机名或IP地址","当前用户的登录名","密码",数据库名称,Unix 套接字这里默认为NULL,端口号,flag)

如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。

执行数据库语句:

int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length);

如果查询成功,返回零。如果发生一个错误,返回非零。

存储执行的操作的结果:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

将结果赋值给 MYSQL_RES *xxx的变量。

取得一行的数据:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

检索结果集的下一行。在mysql_store_result()之后使用时,如果没有要检索的行,mysql_fetch_row()返回NULL。

在mysql_use_result()之后使用时,如果没有要检索的行或出现了错误,mysql_fetch_row()返回NULL。

结果集的列数目由mysql_num_fields(result)给出。如果行中保存了调用mysql_fetch_row()返回的值,将按照row[0]到row[mysql_num_fields(result)-1],访问这些值的指针。行中的NULL值由NULL指针指明。

可以通过调用mysql_fetch_lengths()来获得行中字段值的长度。对于空字段以及包含NULL的字段,长度为0。通过检查字段值的指针,能够区分它们。

取得列的信息:

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);

返回采用MYSQL_FIELD结构的结果集的列。重复调用该函数,以检索关于结果集中所有列的信息。未剩余字段时,mysql_fetch_field()返回NULL。

每次执行新的SELECT查询时,将复位mysql_fetch_field(),以返回关于第1个字段的信息。调用mysql_field_seek()也会影响mysql_fetch_field()返回的字段。

如果调用了mysql_fetch_field()以请求BLOB字段的长度,MySQL将返回默认的Blob长度(8KB)。之所以选择8KB是因为MySQL不知道BLOB的最大长度。应在日后使其成为可配置的。一旦检索了结果集,field->max_length将包含特定查询中该列的最大值的长度。

mysql_free_result()用于释放存储操作结果的内存

关闭数据库:

void mysql_close(MYSQL *mysql);

实验

编写一个 mysql_create.c , 实现mysql创建数据表和插入数据的功能:

#include

#include

#include

#include

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

MYSQL pSql;

MYSQL *pMysql = NULL;

mysql_init(&pSql);

pMysql = mysql_real_connect(&pSql, "localhost", "root", "123456", "", 3306, NULL, 0);

if (pMysql == NULL) {

printf("connect mysql is error!\n");

}

// 创建数据库

char createDataStr[] = "CREATE DATABASE testMysql";

int ret = mysql_real_query(&pSql, createDataStr, strlen(createDataStr));

if (ret == 0) {

MYSQL mySql;

MYSQL *pTempSql = NULL;

mysql_init(&mySql);

pTempSql = mysql_real_connect(&mySql, "localhost", "root", "123456", "testMysql", 3306, NULL, 0);

if (pTempSql != NULL) {

// 建表语句

char createTableStr[] = "CREATE TABLE PERSONINFO (ID INTEGER(10) NOT NULL, NAME CHAR(10) NOT NULL,SEX CHAR(5) NOT NULL,PHONE INTEGER(12) NOT NULL,INSERTTIME DATETIME)";

ret = mysql_real_query(&mySql, createTableStr, strlen(createTableStr));

if (ret == 0) {

// 插入数据库

char insertDataStr[] = "INSERT INTO PERSONINFO(ID,NAME,SEX,PHONE,INSERTTIME) VALUES (1,'ISMILELI','man',110,now());";

ret = mysql_real_query(&mySql, insertDataStr, strlen(insertDataStr));

if (ret == 0) {

printf("insert ISMILELI info is success!\n");

} else {

printf("insert ISMILELI info is failure!\n");

}

} else {

printf("mysql_real_query():%s\n", mysql_error(&mySql));

return -2;

}

}

mysql_close(&mySql);

} else {

printf("mysql_real_query():%s\n", mysql_error(&pSql));

return -1;

}

mysql_close(&pSql);

printf("MySQL Complete!\n");

return 0;

}

编译:

gcc -o mysql_create mysql_create.c -I /usr/include/mysql/ -L /usr/local/mysql/lib -lmysqlclient

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值