C++用mysql自帶的頭文件連接數(shù)據(jù)庫
更新時(shí)間:2016年07月17日 22:13:32 投稿:hebedich
現(xiàn)在正做一個(gè)接口,通過不同的連接字符串操作不同的數(shù)據(jù)庫。要用到mysql數(shù)據(jù)庫。通過網(wǎng)上的一些資料和自己的摸索,大致清楚了C++連接mysql的方法??梢酝ㄟ^2種方法實(shí)現(xiàn)。第一種方法是利用ADO連接,第二種方法是利用mysql自己的api函數(shù)進(jìn)行連接。今天主要來講解下使用API
mysql.h文件在哪,怎么查找。自行百度
#include <mysql/mysql.h>
#include <stdio.h>
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
class people
{
public:
char name[20];
int pid;
int type;
char phone[30];
public:
people(int a){};
people(){
setall();
};
~people(){};
public:
void setall();
};
void people::setall()
{
cout<<"請輸入該用戶的編號"<<endl;
cin>>pid;
cout<<"請輸入該用戶的名字"<<endl;
// gets(name);
cin>>name;
cout<<"請輸入該用戶的類型"<<endl;
cin>>type;
cout<<"請輸入該用戶的聯(lián)系方式"<<endl;
cin>>phone;
}
void save()
{
char sql[1000];
people a;
sprintf(sql,"insert into student values(%d,'%s',%d,'%s')",a.pid,a.name,a.type,a.phone);
if(mysql_query(conn, sql))
{
printf("添加失敗: (%s)\n",mysql_error(conn));
return;
}
else
{
printf("添加成功!\n");
return;
}
return;
}
void update(){
char sql[1000];
people a(1);
cout<<"請輸入你要更改的用戶的編號:";
cin >> a.pid;
cout<<"請輸入你要此編號用戶的姓名:";
cin >> a.name;
cout <<"請輸入你要更改的用戶的類型:";
cin >> a.type;
cout << "請輸入你要更改的用戶的電話:";
cin >> a.phone;
sprintf(sql,"update student set name = '%s',usetype=%d,phone='%s' where pid = %d",a.name,a.type,a.phone,a.pid);
if(mysql_query(conn, sql))
{
printf("更改失敗: (%s)\n",mysql_error(conn));
return;
}
else
{
printf("更改成功!\n");
return;
}
return;
}
void del()
{
char sql[1000];
int pid;
cout<<"請輸入你要?jiǎng)h除的人的編號"<<endl;
cin>>pid;
sprintf(sql,"delete from student where pid = %d",pid);
if(mysql_query(conn, sql))
{
printf("刪除 失敗(%s)\n",mysql_error(conn));
return;
}
else
{
printf("刪除成功!\n");
return;
}
return;
}
void menu()
{
cout<<"1.用戶錄入"<<endl;
cout<<"2.顯示"<<endl;
cout<<"3.更改"<<endl;
cout<<"4.刪除"<<endl;
cout<<"5.退出"<<endl;
}
void show()
{
if (mysql_query(conn, "select * from student")) {
fprintf(stderr, "%s\n", mysql_error(conn));
return;
}
res = mysql_use_result(conn);
printf("編號\t名字\t類型\t聯(lián)系方式\n");
while ((row = mysql_fetch_row(res)) != NULL){
cout<<row[0]<<"\t"<<row[1]<<"\t"<<row[2]<<"\t"<<row[3]<<endl;
}
mysql_free_result(res);
}
int main() {
int s;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, "localhost",
"root", "root", "abc", 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
return -1;
}
mysql_query(conn,"set names utf8");
while(true){
menu();
cin>>s;
if(s==2){show();}
if(s==1){save();}
if(s==3){update();}
if(s==4){del();}
if(s==5){mysql_close(conn);return 0;}
cout<<"按任意鍵繼續(xù).."<<endl;
getchar();
}
return 0;
}
相關(guān)文章
C++中CSimpleList的實(shí)現(xiàn)與測試實(shí)例
這篇文章主要介紹了C++中CSimpleList的實(shí)現(xiàn)與測試實(shí)例,較為詳細(xì)的講述了C++列表類的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-10-10
C++?LeetCode1827題解最少操作使數(shù)組遞增
這篇文章主要為大家介紹了C++?LeetCode1827題解最少操作使數(shù)組遞增示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C語言使用scanf連續(xù)輸入字符串出現(xiàn)的問題
這篇文章主要介紹了C語言使用scanf連續(xù)輸入字符串出現(xiàn)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

