首页 > 学院 > 开发设计 > 正文

Linux下Mysql

2019-11-08 19:32:04
字体:
来源:转载
供稿:网友
使用数据库步骤:1.引用头文件<MySQL/mysql.h>2.makefile 链接加上-lmysqlclient3.初始化client4.建立连接5.client向server发送sql语句,server返回client结果6.断开连接一 连接数据库mysql_init(MYSQL * pmysql)MYSQL *mysql_real_connect(MYSQL *pmysql, const char *hostname,const char *username,const char *passwd, const char*dbname,0,0,0);//连接到MySQL之后必须先调用mysql_init初始化//之后调用mysql_real_connect连接到数据库//mysql_real_connect成功返回指向MySQL连接的指针,失败返回NULL二 执行SQL语句int mysql_query(MYSQL *pmysql, const char *sql);//参数pmysql是连接到MySQL的指针//参数sql是要执行的sql语句//成功返回0,失败返回非0#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <mysql/mysql.h>#include <errno.h>int main(){ MYSQL mysql, *connection; mysql_init(&mysql); connection = mysql_real_connect(&mysql,"localhost","dbuser1","dbuser1", "db1",0, 0, 0); if(connection == NULL) { PRintf("connect error, %s/n", mysql_error(&mysql)); return -1; } if(mysql_query(connection, "SET NAMES utf8 " ) != 0) { printf("set character utf8 error, %s/n", mysql_error(&mysql)); return -1; } printf("请输入要干掉的名字>");fflush(stdout); char SQL[1024]; memset(SQL, 0,sizeof(SQL)); char name[1024]; memset(name, 0,sizeof(name)); read(STDIN_FILENO,name,sizeof(name)); name[strlen(name) -1] = 0; sprintf(SQL,"DELETE FROM table1 WHERE name = '%s' ",name); printf("'%s'/n", SQL); if(mysql_query(connection, SQL ) != 0) { printf("query error, %s/n", mysql_error(&mysql)); return -1; } mysql_close(connection); return EXIT_SUCCESS;}三 执行Select语句MYSQL_RES *mysql_store_result(MYSQL *pmysql);//成功返回一个查询结果指针,查询无结果或者错误返回NULLmysql_free_result(MYSQL_RES *res)//调用完mysql_store_result,一定要用mysql_free_result释放相关资源四 查看查询结果MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);/*例子*/while( (row = mysql_fetch_row(result) )!= NULL){ printf("name:%s,sex:%s,age:%s,class:%s/n",row[0],row[1],row[2],row[3]);//尽管age是数字,但row返回的是NULL结尾的字符串 }void select(){ if(mysql_query(connection,"SELECT * FROM table1") != 0) { printf("query error, %s/n", mysql_error(&mysql)); return -1; } MYSQL_RES * result = mysql_store_result(connection); MYSQL_ROW row; while(1) { if(row == NULL) break; row = mysql_fetch_row(result); printf("name:%s,sex:%s,age:%s,class:%s/n",row[0],row[1],row[2],row[3]);//尽管age是数字,但row返回的是NULL结尾的字符串 } mysql_free_result(result);}五 查看数据库字段信息MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);//mysql_fetch_row返回是记录(行)//mysql_fetch_field返回是字段(列)/*例子*/while((sqlField = mysql_fetch_field(result))!=NULL){ printf("%s/n", sqlField->name);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表