⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 VC++一个数据库的开发
💻 CPP
字号:
#include <iostream>
using namespace std;

#include <WINSOCK2.H>
#pragma comment(lib,"ws2_32.lib")
#include <mysql.h>
#pragma comment(lib,"libmysql.lib")


#define __MYSQL_PORT	(3306)
#define __MYSQL_HOSTNAME	"localhost"
#define __MYSQL_USERNAME	"root"
#define __MYSQL_PASSWORD	"111111"
#define __MYSQL_DBNAME	"person_info"
#define __S_LINE__	"----------------------------------\n"

#define MAX_SQL_LENGTH	(512)

typedef struct tagDateTime
{
	unsigned int year;
	unsigned int month;
	unsigned int day;
}StDateTime;

typedef struct tagPerson
{
	char name[9];
	char sex[3];
	StDateTime birthday;
	unsigned int age;	
	char qq_no[10];
	char tel_num[12];
}StPerson;

bool AddRecord(MYSQL* pSql,StPerson* pData)
{
	char sqltext[MAX_SQL_LENGTH];
	memset(sqltext,0,MAX_SQL_LENGTH);

	if(pSql && pData)
	{
		sprintf(sqltext,"INSERT PERSON (NAME,SEX,BIRTHDAY,AGE,QQ_NO,TEL_NO) \
				VALUES('%s','%s','%04d-%02d-%02d',%d,'%s','%s')",
				pData->name,pData->sex,
				pData->birthday.year,pData->birthday.month,pData->birthday.day,
				pData->age,pData->qq_no,pData->tel_num);

		cout<<sqltext<<endl;
		
		int iRet=mysql_query(pSql,sqltext);
		if(!iRet)
		{
			return true;
		}
	}
	return false;
}

bool connect_mysql(MYSQL* pSql)
{
	if(pSql)
	{
		::mysql_init(pSql);
		MYSQL* _pSql=::mysql_real_connect(pSql,
						__MYSQL_HOSTNAME,
						__MYSQL_USERNAME,
						__MYSQL_PASSWORD,
						__MYSQL_DBNAME,
						__MYSQL_PORT,
						0,0);
		if(_pSql!=pSql)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	return 0;
}

void print_error(MYSQL* pSql)
{
	if(pSql)
	{
		cout<<mysql_error(pSql)<<endl;
	}
}

void print_records(MYSQL_RES *result)
{
	if(result)
	{
		MYSQL_ROW row;
		unsigned int num_fields;
		unsigned int i;
		
		num_fields = mysql_num_fields(result);
		while ((row = mysql_fetch_row(result)))
		{
			unsigned long *lengths;
			lengths = mysql_fetch_lengths(result);
			for(i = 0; i < num_fields; i++)
			{
				char* ptr=row[i];
				if(ptr)
				{
					cout<<ptr;
				}
				else
				{
					cout<<"[NULL]";
				}
				cout<<" ";
			}
			cout<<endl;
		}		
	}
}

int main()
{
	MYSQL sqlObj;
	
	
	if(!connect_mysql(&sqlObj))
	{
		cout<<"error:can not connect to mysql database!"<<endl;
		return 0;
	}
	else
	{
		cout<<"connect to dbserver....OK\n"<<__S_LINE__<<endl;
		cout<< mysql_set_character_set(&sqlObj,"gb2312")<<endl;
		print_error(&sqlObj);
	}

	int iRet=0;
	/*
	//创建数据库
	iRet=mysql_query(&sqlObj,"create database person");
	if(!iRet)
	{
		cout<<"create db ok."<<endl;
	}
	else
	{
		cout<<"error:"<<print_error(&sqlObj)<<endl;
		goto EXIT;
	}
	*/

	//得到当前数据记录
	iRet=mysql_query(&sqlObj,"select * from person");
	if(iRet)
	{
		cout<<"error:";
		print_error(&sqlObj);
		goto EXIT;
	}
	else
	{
		
		MYSQL_RES *result=0;
		MYSQL_FIELD* field=0;
		result=mysql_store_result(&sqlObj);
		if(result)
		{
			int num_fields = mysql_num_fields(result);
			int num_rows=mysql_num_rows(result);
			cout<<"there is/are "<<num_fields<<" field(s) in the table!"<<endl;
	
			cout<<"the field(s) is/are: ";
			field=mysql_fetch_field(result);
			for(int i=0;i<num_fields;i++)
			{
				cout<<field[i].name<<" "; 
			}
			cout<<endl;

			cout<<"there is/are "<<num_rows<<" record(s) in the table!"<<endl;
			print_records(result);
			
			mysql_free_result(result);
		}
		else
		{
			cout<<"error:";
			print_error(&sqlObj);
			goto EXIT;
		}
	}

	//添加记录
	StDateTime dt;
	dt.year=1940;
	dt.month=dt.day=1;

	StPerson person;
	memset(&person,0,sizeof(StPerson));
	
	sprintf(person.name,"张三");
	sprintf(person.sex,"男");
	person.birthday=dt;
	person.age=45;
	sprintf(person.tel_num,"13000000000");
	if(!AddRecord(&sqlObj,&person))
	{
		print_error(&sqlObj);
		goto EXIT;
	}
	else
	{
		cout<<"Insert date ok."<<endl;
	}
	//关闭连接 
EXIT:	mysql_close(&sqlObj);
	cout<<"close the connection now!"<<endl;

	
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -