c 写mysql 语句_Linux C MySQL语句

linux 下 用c语言创建mysql数据库笔记(一)

在引用头文件时必须包含‘mysql.h’的头文件(必须是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*),

---- 对其中几个函数作简单说明,详细说明,可参考MySQL文档:

---- 1. MYSQL *mysql_init(MYSQL *mysql)

---- 初始化一个类型为MYSQL的数据结构,为执行mysql_real_connect()做准备。参数

mysql为指向该结构的指针,如果mysql为NULL,则新建并初始化一个MYSQL的数据结构。

新建的结构将在mysql_close()中释放。

---- 若成功,返回初始化的MYSQL数据结构的指针,否则返回NULL。

---- 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,

---- const char *user, const char *passwd, const char *db,

---- unsigned int port, const char *unix_socket, unsigned int client_flag)

---- 与MySQL数据库引擎建立连接。在执行进一步的数据操作之前,必须保证mysql_re

al_connect()成功返回。

---- 参数mysql是mysql_init()的返回值;

---- 参数host是运行MySQL数据库引擎的机器的TCP/IP主机名,如为NULL则默认为“lo

calhost”;

---- 参数user和passwd是MySQL数据库的合法用户和口令;

---- 参数db是连接的数据库名;

---- 参数port,unix_socket和client_flag一般取默认值。

---- 3. int mysql_query(MYSQL *mysql, const char *query)

---- 执行query字符串中的SQL语句,query必须以0结尾。如果成功,返回0。

---- 4. MYSQL_RES *mysql_store_result(MYSQL *mysql)

---- 返回SELECT,SHOW,DESCRIBE, EXPLAIN等语句执行的结果。函数新建一个MYSQL_

RES的数据结构,把结果存储在该结构中。如果查询没有匹配的结果,则返回空数据集。

处理完结果集后,必须调用mysql_free_result()。

---- 如果出错,返回NULL,否则返回MYSQL_RES结构的指针。

---- 5. MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

---- 取回结果集中的下一条记录,如果没有记录或出错,返回NULL。一条记录中的字段

数可以用mysql_num_fields(result)获得,各字段的值可以用row[0] 到 row[mysql_nu

m_fields(result)-1]的数组来访问。

范例:链接MySQL

#include

#include

#include

int main()

{

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

char server[] = "localhost";

char user[] = "root";

char password[] = "123456";

char database[] = "mysql";

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

if (mysql_query(conn, "show tables"))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

res = mysql_use_result(conn);

printf("MySQL Tables in mysql database:\n");

while ((row = mysql_fetch_row(res)) != NULL)

{

printf("%s \n", row[0]);

}

mysql_free_result(res);

mysql_close(conn);

printf("finish! \n");

return 0;

}

终端运行:

xb@ubuntu:~/xb/mysql$ vi mysql_test.c

xb@ubuntu:~/xb/mysql$ gcc mysql_test.c -Wall -lmysqlclient

xb@ubuntu:~/xb/mysql$ ./a.out

MySQL Tables in mysql database:

columns_priv

db

event

func

general_log

help_category

help_keyword

help_relation

help_topic

host

ndb_binlog_index

plugin

proc

procs_priv

proxies_priv

servers

slow_log

tables_priv

time_zone

time_zone_leap_second

time_zone_name

time_zone_transition

time_zone_transition_type

user

finish!

xb@ubuntu:~/xb/mysql$

范例二:建表

#include

#include

#include

int main()

{

MYSQL *conn;

char server[] = "localhost";

char user[] = "root";

char password[] = "123456";

char database[] = "mysql";

char sql_create[] = "CREATE TABLE if not exists testdb.cart(id int, name varchar(20), price float);";

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

// if (mysql_query(conn, " create database testdb"))

if (mysql_query(conn, sql_create))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

mysql_close(conn);

printf("finish! \n");

return 0;

}

终端运行:

检查数据库中有无此表:

mysql> show tables;

+------------------+

| Tables_in_testdb |

+------------------+

| aaa              |

| cart             |

| ccc              |

| ddd              |

+------------------+

4 rows in set (0.00 sec)

mysql> describe cart;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id    | int(11)     | YES  |     | NULL    |       |

| name  | varchar(20) | YES  |     | NULL    |       |

| price | float       | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set (0.06 sec)

范例三:插入数据

#include

#include

#include

int main()

{

MYSQL_ROW row;

char server[] = "localhost";

char user[] = "root";

char password[] = "123456";

char database[] = "mysql";

char sql_insert[] = "INSERT INTO testdb.cart(id, name, price) VALUES(1,' apple', 12.6);";

char sql_select[] = "SELECT * FROM testdb.cart;";

MYSQL *conn = mysql_init(NULL);

if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))

{

fprintf(stderr, "%s\n", mysql_error(conn));

}

if (mysql_query(conn, sql_insert))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

if (mysql_query(conn, sql_select))

{

fprintf(stderr, "%s\n", mysql_error(conn));

exit(1);

}

MYSQL_RES *res = mysql_use_result(conn);

while ((row = mysql_fetch_row(res)) != NULL)

{

printf("%s \n", row[0]);

}

mysql_close(conn);

printf("finish! \n");

return 0;

}

终端运行:

xb@ubuntu:~/xb/mysql$ vi mysql_create.c

xb@ubuntu:~/xb/mysql$ gcc mysql_create.c -Wall -lmysqlclient

xb@ubuntu:~/xb/mysql$ ./a.out

1

finish!

xb@ubuntu:~/xb/mysql$

数据库验证:

mysql> select * from cart;

+------+-------+-------+

| id   | name  | price |

+------+-------+-------+

|    1 | apple |  12.6 |

+------+-------+-------+

1 row in set (0.00 sec)

范例三:查询

#include

#include

#include

int main(void)

{

MYSQL *conn_ptr;

MYSQL_RES *res_ptr;

MYSQL_ROW sqlrow;

// MYSQL_FIELD *fd;

int res, i, j;

conn_ptr = mysql_init(NULL);

if (!conn_ptr) {

return EXIT_FAILURE;

}

conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root", "123456", " mysql", 0, NULL, 0);

if (conn_ptr) {

res = mysql_query(conn_ptr, "SELECT * FROM testdb.cart"); //查询语句

if (res) {

printf("SELECT error:%s\n",mysql_error(conn_ptr));

} else {

res_ptr = mysql_store_result(conn_ptr); //取出结果集

if(res_ptr) {

printf("%lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));

j = mysql_num_fields(res_ptr);

while((sqlrow = mysql_fetch_row(res_ptr))) { //依次取出记

for(i = 0; i < j; i++)

printf("%s\t", sqlrow[i]); //输出

printf("\n");

}

if (mysql_errno(conn_ptr)) {

// fprintf(stderr, "Retrive error:s\n", mysql_error(conn_ ptr));

}

}

mysql_free_result(res_ptr);

}

} else {

printf("Connection failed\n");

}

mysql_close(conn_ptr);

return EXIT_SUCCESS;

}

终端运行:

xb@ubuntu:~/xb/mysql$ vi mysql_select.c

xb@ubuntu:~/xb/mysql$ gcc mysql_select.c -Wall -lmysqlclient

xb@ubuntu:~/xb/mysql$ ./a.out

2 Rows

1 apple 12.6

2 pear 8.8

xb@ubuntu:~/xb/mysql$

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值