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

1.Ubuntu安装msyql

    1.安装mysql数据库

sudo apt-get install mysql-server

    2.安装mysql客户端


sudo apt-get install mysql-client

2. C API的基本类型

    1. MYSQL

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

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

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

    2.MYSQL_RES

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

    3.MYSQL_ROW

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

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

    3.官方文档地址

       1.http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c

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

//验证
    //成功

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;
}

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;
}

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;
}

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;
}

转载地址:https://my.oschina.net/jianchaopeng/blog/277363

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C语言可以通过调用API来连接数据库进行增删改查操作。 一般常用的数据库MySQL、Oracle、SQL Server等。以下以MySQL为例来说明: 1. 安装MySQL C连接器 要连接MySQL数据库,需要先安装MySQL C连接器,在Ubuntu Linux环境下,使用以下命令安装:sudo apt-get install libmysqlclient-dev 2. 连接MySQL数据库 在连接MySQL数据库之前,需要先定义一个MYSQL结构体来存储连接信息,例如: MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "root", "root", "testdb", 0, NULL, 0); 其中, "localhost"是MySQL服务器的IP地址,"root"是MySQL服务器的用户名, "root"是MySQL服务器的密码,"testdb"是要连接的数据库名。 3. 增加数据 使用MySQL的C API可以很方便地执行增删改查操作,以下是一个添加数据的例子: char query[1000]; sprintf(query, "insert into student(name, age) values('%s', %d)", "张三", 18); mysql_query(&mysql, query); 其中,%s和%d是占位符,可以用具体的值去替换。这里是将一个名为“张三”的学生信息添加到名为“student”的表中。 4. 删除数据 与增加数据类似,删除数据也很简单。以下是一个删除数据的例子: char query[1000]; spintf(query, "delete from student where id=%d", 3); mysql_query(&mysql, query); 其中,id=3的学生将被删除。 5. 修改数据 以下是一个修改数据的例子: char query[1000]; sprintf(query, "update student set name='%s' where id=%d", "李四", 4); mysql_query(&mysql, query); 其中,id=4的学生的姓名将被修改为“李四”。 6. 查询数据 以下是一个查询数据的例子: char query[1000]; sprintf(query, "select * from student"); mysql_query(&mysql, query); MYSQL_RES *result = mysql_store_result(&mysql); int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { for (int i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } 以上是一个简单的查询数据的例子,它将名为“student”的表中的所有记录都输出到控制台上。 总结 通过MySQL C API,可以在C语言中方便地连接MySQL数据库,并对其进行增删改查操作。这种方式比较灵活,但是比较底层,需要编写大量的代码来实现相对比较简单的操作。对于一般的应用程序,可以考虑使用ORM框架来简化代码编写。 ### 回答2: 连接数据库并进行增删改查是数据库应用的基础操作,以下是一个简单的步骤如下: 1. 安装数据库:首先需要安装合适的数据库服务,比如MySQL、Oracle、SQLServer等等。安装完毕后启动数据库服务。 2. 连接数据库:在启动数据库服务后,使用编程语言(如Java、Python、C#等等)提供的API接口连接到数据库中。 3. 编写数据操作代码:连接数据库后,可以对数据库进行数据查询、数据插入、数据更新、数据删除等等操作。编写代码时需要使用SQL语句或ORM框架。 4. 运行代码:将编写好的代码运行程序,程序将会连接到数据库并执行指定的数据操作。 5. 验证结果:程序执行完成后,可以查看操作是否执行成功,在数据库中查看对应的数据是否已经操作成功。 需要注意的是,每个数据库软件有不同的连接串、驱动及API,具体使用方法需要参考各自的API文档。此外,为了保证数据的安全性,从编写数据操作代码到运行代码,要确保代码没有漏洞,防止黑客利用SQL注入等攻击获取数据,这是数据库应用开发者需要注意的问题。 ### 回答3: 在进行数据库操作之前,我们需要先通过编程语言提供的库或框架连接到数据库。在c语言中,我们可以使用MySQL自带的C API或第三方库,如libmysqlclient等。 连接数据库的步骤一般为:初始化MySQL库、获取连接句柄、设置连接选项、建立连接等。连接成功后,就可以进行增删改查操作了。 增加数据可以使用SQL语句INSERT INTO,将新数据插入到指定的表中。 删除数据可以使用SQL语句DELETE FROM,将指定条件的数据从表中删除。 修改数据可以使用SQL语句UPDATE,根据指定条件修改表中的数据。 查询数据可以使用SQL语句SELECT,根据条件查询表中的数据,并将结果返回给程序处理。 通常是先在c程序中构造SQL语句,再通过MySQL提供的函数进行执行和处理结果。需要注意的是,在进行数据库操作时应充分考虑数据安全问题,如避免SQL注入攻击等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值