日期:2014-05-16  浏览次数:20568 次

linux c 连接mysql数据库
作者:zieckey(zieckey@yahoo.com.cn)
All Right Reserved!


1. mysql在linux下的编译和安装
[root@localhost zieckey]# mkdir /usr/local/mysql
[root@localhost zieckey]# cp mysql-4.0.12.tar.gz /home/
[root@localhost root]# cd /home/

解压
[root@localhost home]# tar zxvf mysql-4.0.12.tar.gz
[root@localhost home]# cd mysql-4.0.12

配置,生成Makefile
[root@localhost mysql-4.0.12]# ./configure --prefix=/usr/local/mysql --without-debug --with-extra-charsets=gb2312 --enable-assembler --without-isam --without-innodb --with-pthread --enable-thread-safe-client

编译
[root@localhost mysql-4.0.12]# make

安装
[root@localhost mysql-4.0.12]# make install

[root@localhost mysql-4.0.12]# scripts/mysql_install_db

创建一个数据库管理员
[root@localhost mysql-4.0.12]# groupadd mysql
[root@localhost mysql-4.0.12]# useradd -g mysql mysql


改变权限。
[root@localhost mysql]# chown -R root /usr/local/mysql
[root@localhost mysql]# chown -R mysql /usr/local/mysql/var
[root@localhost mysql]# chgrp -R mysql /usr/local/mysql



配置环境变量,以便于编程
[root@localhost mysql-4.0.12]# cd /usr/local/mysql/bin/
[root@localhost bin]# export PATH=$PATH:/usr/local/mysql/bin/
[root@localhost bin]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql/
[root@localhost bin]# env

启动mysql服务器
[root@localhost root]# cd /usr/local/mysql/bin/
[root@localhost bin]# ./mysqld_safe -u mysql&
Starting mysqld daemon with databases from /usr/local/mysql/var

查看是否启动了
[root@localhost root]# pgrep mysql
15931
15950
15951



启动一个mysql客户端
[root@localhost root]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.12

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

创建一个数据库
mysql> create database cusemysql;
Query OK, 1 row affected (0.00 sec)

并使用这个数据库
mysql> use cusemysql;
Database changed

在给数据库内创建一个表
mysql> create table children(childno int not null unique,fname varchar(20),age int);
Query OK, 0 rows affected (0.00 sec)

在该表内插入一项数据
mysql> insert into children values(5,"花儿",10);
Query OK, 1 row affected (0.00 sec)

mysql> select * from children;
+---------+-------+------+
| childno | fname | age |
+---------+-------+------+
|       5 | 花儿 |   10 |
+---------+-------+------+
1 row in set (0.03 sec)

mysql>

2. 下面进行具体的操作

插入:insert  

好的,我们现编辑一段c代码,取名为insert.c
///////////////////////////////////
/* insert.c */
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
/*注意哦,上面也可以是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*/

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

    int res;

    mysql_init(&my_connection);

    /*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
    if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS))
    {
            printf("Connection success\n");
        res = mysql_query(&my_connection, "insert into children values(11,'Anny',5)");

        if (!res)
        {   
            printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
        /*里头的函数返回受表中影响的行数*/
        }
        else
        {
        //分别打印出错误代码及详细信息
        fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_er