Rumah pangkalan data tutorial mysql linux(ubuntu)下C++访问mysql数据库_MySQL

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

Jun 01, 2016 pm 01:11 PM

Ubuntu

  1. Ubuntu安装msyql

    1. 安装mysql数据库

      sudo apt-get install mysql-server
      Salin selepas log masuk
    2. 安装mysql客户端

      sudo apt-get install mysql-client
      Salin selepas log masuk
  2. C API的基本类型

    1. MYSQL

      1. 该结构代表1个数据库连接的句柄.

      2. 几乎所有的MySQL函数均使用它.

      3. 不应尝试拷贝MYSQL结构, 不保证这类拷贝结果会有用.

    2. MYSQL_RES

      1. 该结构代表返回行的查询结果

    3. MYSQL_ROW

      1. 这是1行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。

      2. 行是通过调用mysql_fetch_row()获得的。

    4. 官方文档地址

      1. http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c
        Salin selepas log masuk
  3. 代码

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

      #include <iostream>#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//验证    //成功
      Salin selepas log masuk
    2. 更新表内容

      #include <iostream>#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;}
      Salin selepas log masuk
    3. 调用存储过程

      #include <iostream>#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;}
      Salin selepas log masuk
    4. 查询数据表的内容

      #include <iostream>#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 = "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;}
      Salin selepas log masuk
    5. 得到指定数据库test中的所有表

      #include <iostream>#include <string>#include <vector>#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 = "show tables;";		mysql_query( &mysql, sql.c_str() ); 	MYSQL_RES *result = NULL;	result = mysql_store_result( &mysql );	//得到查询出来所有数据记录的数量	vector<string> allTable;	MYSQL_ROW row = mysql_fetch_row( result );	while( NULL != row )	{		allTable.push_back( row[0] );		row = mysql_fetch_row( result );	}	for(vector<string>::const_iterator cit = allTable.begin(); cit != allTable.end(); ++cit )	{		cout << *cit << "/t";	}	cout << endl;		mysql_free_result( result );		mysql_close( &mysql );		return 0;}
      Salin selepas log masuk



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Bagaimana anda mengendalikan dataset besar di MySQL? Bagaimana anda mengendalikan dataset besar di MySQL? Mar 21, 2025 pm 12:15 PM

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Mar 21, 2025 pm 06:28 PM

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Bagaimana anda menjatuhkan jadual di MySQL menggunakan pernyataan jadual drop? Mar 19, 2025 pm 03:52 PM

Artikel ini membincangkan jadual menjatuhkan di MySQL menggunakan pernyataan Jadual Drop, menekankan langkah berjaga -jaga dan risiko. Ia menyoroti bahawa tindakan itu tidak dapat dipulihkan tanpa sandaran, memperincikan kaedah pemulihan dan bahaya persekitaran pengeluaran yang berpotensi.

Bagaimana anda mewakili hubungan menggunakan kunci asing? Bagaimana anda mewakili hubungan menggunakan kunci asing? Mar 19, 2025 pm 03:48 PM

Artikel membincangkan menggunakan kunci asing untuk mewakili hubungan dalam pangkalan data, memberi tumpuan kepada amalan terbaik, integriti data, dan perangkap umum untuk dielakkan.

Bagaimana anda membuat indeks pada lajur JSON? Bagaimana anda membuat indeks pada lajur JSON? Mar 21, 2025 pm 12:13 PM

Artikel ini membincangkan membuat indeks pada lajur JSON dalam pelbagai pangkalan data seperti PostgreSQL, MySQL, dan MongoDB untuk meningkatkan prestasi pertanyaan. Ia menerangkan sintaks dan faedah mengindeks laluan JSON tertentu, dan menyenaraikan sistem pangkalan data yang disokong.

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Mar 18, 2025 pm 12:00 PM

Artikel membincangkan mendapatkan MySQL terhadap suntikan SQL dan serangan kekerasan menggunakan pernyataan yang disediakan, pengesahan input, dan dasar kata laluan yang kuat. (159 aksara)

See all articles