linux 下C++连接mysql数据库

时间:2022-05-26 11:28:35
linux 下C++连接mysql数据库

linux 下C++连接mysql数据库

mjrao 发布于 2013年01月07日 19时,0评/814阅
分享到 收藏+120 linux 下C++连接mysql数据库
标签: <无>

代码片段(3)

[文件] mydb.h ~ 416B    下载(37)

01 #ifndef __MY_DB_H
02  
03 #include <mysql/mysql.h>
04 #include <stdlib.h>
05 #include <stdio.h>
06 #include <iostream>
07 #include <string.h>
08 using namespace std;
09 class CMyDB
10 {
11 public:
12     CMyDB();
13     boolinitDB(string server_host , string user, string password, string db_name);
14     boolexecuteSQL(string sql_str);
15     boolcreate_table(string table_str_sql);
16     ~CMyDB();
17 private:
18     MYSQL *connection;
19     MYSQL_RES *res;
20     MYSQL_ROW row;
21 };
22 #endif

[文件] mydb.cpp ~ 2KB    下载(26)

01 #include "mydb.h"
02  
03 CMyDB::CMyDB()
04 {  
05     //初始化连接数据库变量
06     connection = mysql_init(NULL);
07     if(connection == NULL)
08     {
09         perror("mysql_init");
10         exit(1);
11     }
12 }
13 CMyDB::~CMyDB()
14 {  
15     //关闭初始化连接数据库变量
16     if(connection != NULL)
17     {
18         mysql_close(connection);
19     }
20 }
21 //初始化数据库 数据库连接
22 bool CMyDB::initDB(string server_host , string user, string password , string db_name )
23 {  
24     //运用mysql_real_connect函数实现数据库的连接
25     connection = mysql_real_connect(connection , server_host.c_str() , user.c_str() , password.c_str() , db_name.c_str() , 0 , NULL , 0);
26     if(connection == NULL)
27     {
28         perror("mysql_real_connect");
29         exit(1);
30     }
31     returntrue;
32 }
33 //执行SQL语句
34 bool CMyDB::executeSQL(string sql_str)
35 {
36     // 查询编码设定
37     if(mysql_query(connection,"set names utf8"))
38     {
39         fprintf(stderr,"%d: %s\n",mysql_errno(connection), mysql_error(connection));
40     }
41     intt = mysql_query(connection,  sql_str.c_str());
42     if(t)
43     {
44         printf("Error making query: %s\n", mysql_error(connection));
45         exit(1);
46     }
47     else
48     {  
49         //初始化逐行的结果集检索
50         res = mysql_use_result(connection);
51         if(res)
52         {
53             //mysql_field_count(connection)   返回作用在连接上的最近查询的列数
54             for(inti = 0 ; i < mysql_field_count(connection) ; i++)
55             {  
56                 //检索一个结果集合的下一行
57                 row = mysql_fetch_row(res);    
58                 if(row <= 0)
59                 {
60                     break;
61                 }
62                 //mysql_num_fields(res)  函数返回结果集中字段的数
63                 for(intr = 0 ; r  < mysql_num_fields(res) ; r ++)
64                 {
65                     printf("%s\t", row[r]);   
66                 }
67                 printf("\n");
68             }
69         }
70         //释放结果集使用的内存
71         mysql_free_result(res);
72     }
73     returntrue;
74 }
75 //表的创建
76 bool CMyDB::create_table(string table_str_sql)
77 {
78     intt = mysql_query(connection , table_str_sql.c_str());
79     if(t)
80     {
81         printf("Error making query: %s\n", mysql_error(connection));
82         exit(1);
83     }
84     returntrue;
85 }

[文件] main.cpp ~ 370B    下载(27)

01 #include "mydb.h"
02 int main(intargc,char **argv)
03 {
04     CMyDB my;
05     my.initDB("localhost", "root","123456" , "studentInfo");
06     my.executeSQL("select * from student;");
07     return0;
08 }
09  
10 /*
11 * sql语句
12 *create database studentInfo
13 *use studentInfo
14 *create table student(id nchar(10) not null unique, name nchar(15) , sex nchar(4) check(sex in('男' , '女')), age nchar(3));
15 */