小白安全博客

小白记忆
专注网络安全

 linux(ubuntu)下C++访问mysql数据库

Ubuntu安装msyql

安装mysql数据库

sudo apt-get install mysql-server

安装mysql客户端

sudo apt-get install mysql-client


C API的基本类型
MYSQL
该结构代表1个数据库连接的句柄.
几乎所有的MySQL函数均使用它.
不应尝试拷贝MYSQL结构, 不保证这类拷贝结果会有用.
MYSQL_RES
该结构代表返回行的查询结果
MYSQL_ROW
这是1行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。
行是通过调用mysql_fetch_row()获得的。
官方文档地址
http://dev.mysql.com/doc/refman/5.1/zh/apis.html

向表中插入(删除)一条数据

#include
#include <mysql/mysql.h>
using namespace std;

int main(int argc, char* argv[])
{
//准备mysql的访问结构
MYSQL mysql;
mysql_init( &mysql );

mysql_real_connect(
&mysql,
“192.168.16.114”, //要访问数据库的IP地址
“root”, //用户名
“root”, //密码
“test”, //要访问的数据库
3306, //该数据库的端口
NULL, //一般为NULL
0 //一般为0
);

//插入
string sql = “insert into student value(1, ‘jp’, 24, ‘gzjd’)”;

//删除
//string sql = “delete from student where id = 33”;

//执行sql语句
mysql_query( &mysql, sql.c_str() );

//关闭数据库连接
mysql_close( &mysql );

return 0;
}

//编译
//g++ file.cpp -o target -lmysqlclient

//执行
//./target

//验证
//成功


更新表内容

#include
#include <mysql/mysql.h>
using namespace std;

int main(int argc, char* argv[])
{
MYSQL mysql;
mysql_init( &mysql );

mysql_real_connect(
&mysql,
“192.168.16.114”,
“root”,
“root”,
“test”,
3306,
NULL,
0
);

string sql = “update student set name = ‘pj’ where id = 2”;

mysql_query( &mysql, sql.c_str() );

mysql_close(&mysql);

return 0;
}


调用存储过程
#include
#include <mysql/mysql.h>
using namespace std;

int main(int argc, char* argv[])
{
MYSQL mysql;
mysql_init( &mysql );

mysql_real_connect(
&mysql,
“192.168.16.114”,
“root”,
“root”,
“test”,
3306,
NULL,
0
);

string sql = “call myPorc();”;
int ret = mysql_query( &mysql, sql.c_str() );

// debug info
// cout << mysql_error( &mysql );
// cout << ret << endl;

mysql_close(&mysql);

return 0;
}


查询数据表的内容

#include
#include &lt;mysql/mysql.h&gt;
using namespace std;

int main(int argc, char* argv[])
{
MYSQL mysql;
mysql_init( &mysql );
mysql_real_connect(
&mysql,
“192.168.16.114”,
“root”,
“root”,
“test”,
3306,
NULL,
0
);

string sql = “select * from student”;
mysql_query( &mysql, sql.c_str() );

MYSQL_RES *result = NULL;
result = mysql_store_result( &mysql );

//得到查询出来所有数据的条数
int row_count = mysql_num_rows( result );
cout << “all data number: ” << row_count << endl;

//得到字段的个数和字段的名字
int field_count = mysql_num_fields( result );
cout << “field count : ” << field_count << endl;

//得到所有字段的名字
MYSQL_FIELD* field = NULL;
for( int i = 0; i < field_count; ++i)
{
field = mysql_fetch_field_direct( result, i );
cout << field->name << “\t”;
}
cout << endl;

//显示表中的所有数据
MYSQL_ROW row = NULL;
row = mysql_fetch_row( result );
while ( NULL != row )
{
for( int i = 0; i < field_count; ++i)
{
cout << row[i] << “\t”;
}
cout << endl;

row = mysql_fetch_row( result );
}

mysql_free_result(result);

mysql_close( &mysql );

return 0;
}

得到指定数据库test中的所有表:

#include
#include
#include
#include &lt;mysql/mysql.h&gt;
using namespace std;

int main(int argc, char* argv[])
{
//定义一个数据库连接句柄
MYSQL mysql;

//对数据句柄进行初始化
mysql_init( &mysql );

//连接数据库
mysql_real_connect(
&mysql,
“192.168.16.114”,
“root”,
“root”,
“test”,
3306,
NULL,
0
);

//查询数据库
string sql = “show tables;”;

mysql_query( &mysql, sql.c_str() );

MYSQL_RES *result = NULL;
result = mysql_store_result( &mysql );

//得到查询出来所有数据记录的数量
vector allTable;
MYSQL_ROW row = mysql_fetch_row( result );
while( NULL != row )
{
allTable.push_back( row[0] );
row = mysql_fetch_row( result );
}

for(vector::const_iterator cit = allTable.begin(); cit != allTable.end(); ++cit )
{
cout << *cit << “\t”;
}
cout << endl;

mysql_free_result( result );

mysql_close( &mysql );

return 0;
}


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏,请先点一下下面的付款方式

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

 您阅读这篇文章共花了:

打赏作者
版权所有,转载注明出处:小白安全博客-菜鸟安全博客-小白个人博客 » linux(ubuntu)下C++访问mysql数据库»https://www.xiaobaibk.com/xiao-bai-285.html
标签: linux

发表评论

表情

网友评论(0)