快速业务通道

Linux下C 访问MySQL

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-07
今天给大家演示在linux下如果用C 操作mysql 1:安装MySQL 挂载光盘:
mkdir /cdrom
mount /dev/hdc /cdrom
cd /cdrom/Server
rpm -ivh perl-DBI-1.52-2.el5.i386.rpm
rpm -ivh mysql-5.0.45-7.el5.i386.rpm mysql-bench-5.0.45-7.el5.i386.rpm mysql-devel-5.0.45-7.el5.i386.rpm
rpm -ivh perl-DBD-MySQL-3.0007-2.el5.i386.rpm
rpm -ivh mysql-server-5.0.45-7.el5.i386.rpm mysql-test-5.0.45-7.el5.i386.rpm查看mysql服务状态:
service mysqld status启动服务:
service mysqld start连接数据库:
mysql 2:安装gcc工具包 rpm -ivh gcc* --force --nodeps 强制安装 3:进入mysql create table t1 (id int,name varchar(30)); t1表插入数据:
1.cpp
#include <iostream>
#include <mysql/mysql.h>
#include <string>
using namespace std;
main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", "test", 3306, NULL, 0);
string sql = "insert into t1 (id, name) values (1, ''java1'');";
mysql_query(&mysql, sql.c_str());
mysql_close(&mysql);
}
g -o 1.out 1.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql 更新mysql数据;
1.cpp
#include <iostream>
#include <mysql/mysql.h>
#include <string>

using namespace std;

main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", "test", 3306, NULL, 0);
string sql = "insert into t1 (id,name) values (2, ''java2''),(3, ''java3'');";
mysql_query(&mysql, sql.c_str());
sql = "update t1 set name = ''java33'' where id = 3;";
mysql_query(&mysql, sql.c_str());
mysql_close(&mysql);
}
g -o 1.out 1.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./1.out mysql 存储过程:
mysql>delimiter //
>create procedure p01()
>begin
>insert into t1 (id,name) values (66, ''java66'');
>end;
>//应用存储过程: mysql>delimiter //
>create procedure p01()
>begin
>insert into t1 (id,name) values (66, ''java66'');
>end;
>// 触发器:
新建t2表:
mysql>delimiter //
>create trigger tr1 after insert on t1 for each row
>begin
>insert into t2 (id,name) values (new.id,new.name);
>end;
>//
>delete from t1 where id = 66;
>//
>delimeter ; vi 3.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", 3306, NULL, 0);
string sql = "call p01();";
mysql_query(&mysql, sql.c_str());
mysql_close(&mysql);
}

g -o 3.out 3.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./3.out mysql>delimeter ;
>select * from t1;
>select * from t2;
>存在数据(66, ''java66'') 查看表中数据的总数: vi 4.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
MYSQL mysql;
MYSQL_RES *result = NULL;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", "test", 3306, NULL, 0);
string sql = "select id,name from t1;";
mysql_query(&mysql, sql.c_str());
result = mysql_store_result(&mysql);
int rowcount = mysql_num_rows(result);
cout << rowcount << endl;
mysql_close(&mysql);
}

g -o 4.out 4.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./4.out 查处字段的总数: vi 5.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
MYSQL mysql;
MYSQL_RES *result = NULL;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", 3306, NULL, 0);
string str = "select id,name from t1;";
mysql_query(&mysql, sql.c_str());
result = mysql_store_result(&mysql);
int rowcount = mysql_num_rows(result);
cout << rowcount << endl;
int fieldcount = mysql_num_fields(result);
cout << fieldcount << endl;
mysql_close(&mysql);
}

g -o 5.out 5.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./5.out 列出具体字段名: vi 6.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
MYSQL mysql;
MYSQL_RES *result = NULL;
MYSQL_FIELD *field = NULL;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", "test", 3306, NULL, 0);
string str = "select id,name from t1;";
mysql_query(&mysql, sql.c_str());
result = mysql_store_result(&mysql);
int rowcount = mysql_num_rows(result);
cout << rowcount << endl;
int fieldcount = mysql_num_fields(result);
cout << fieldcount << endl;
for(int i = 0; i < fieldcount; i )
{
field = mysql_fetch_field_direct(result,i);
cout << field->name << "tt";
}
cout << endl;
mysql_close(&mysql);
}

g -o 6.out 6.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
./6.out 显示表中所有数据: vi 7.cpp
#include <iostream>
#include <string>
#include <mysql/mysql.h>

using namespace std;

main()
{
MYSQL mysql;
MYSQL_RES *result = NULL;
MYSQL_FIELD *field = NULL;
mysql_init(&mysql);
mysql_real_connect(&mysql, "localhost", "root", "root", 3306, NULL, 0);
string str = "select id,name from t1;";
mysql_query(&mysql, sql.c_str());
result = mysql_store_result(&mysql);
int rowcount = mysql_num_rows(result);
cout << rowcount << endl;
int fieldcount = mysql_num_fields(result);
cout << fieldcount << endl;
for(int i = 0; i < fieldcount; i )
{
field = mysql_fetch_field_direct(result,i);
cout << field->name << "tt";
}
cout << endl;
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while(NULL != row)
{
for(int i=1; i<fieldcount; i )
{
cout << row[i] << "tt";
}
cout << endl;
row = mysql_fetch_row(result);
}
mysql_close(&mysql);
}

g -o 7.out 7.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql

./out

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号