貼一段從xml操作mysql創建表的代碼,備忘

public:
	CString tablename[100];
	LONG tablenum;
	CString fieldname[100][100];
	CString fieldtype[100][100];
	CString fieldcalc[100][100];
	LONG fieldnum;

	MYSQL* mysql;
	char* db;
	char* svr;
	char* usr;
	char* pwd;
	CString sql;





void CDbtestDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	//將數據存放在tablenum,tablename,fieldname,fieldtype,fieldcalc中
	CMarkup xml;
	xml.Load("數據庫表.xml");
	xml.FindElem("tbea");
	xml.IntoElem();
	for (int i=0;xml.FindElem();i++)
	{
		tablename[i]=xml.GetTagName();
		xml.IntoElem();
		for (int j=0;xml.FindElem();j++)
		{
			xml.IntoElem();
			xml.FindElem("FieldName");
			fieldname[i][j]=xml.GetData();
			xml.FindElem("FieldType");
			fieldtype[i][j]=xml.GetData();
			xml.FindElem("isCal");
			fieldcalc[i][j]=xml.GetData();
			xml.OutOfElem();
		}
		fieldnum=j;
		xml.OutOfElem();
	}
	tablenum=i;
	////////////////////////////////////////////////
	//刪除表
CString sql="";
mysql=mysql_init(NULL);
mysql_real_connect(mysql,svr,usr,pwd,db,0,NULL,0);
mysql_query(mysql,"set names gbk");
for (i=0;i<tablenum;i++)
{
	sql="DROP TABLE "+tablename[i];
	mysql_real_query(mysql,sql,(unsigned long)strlen(sql));

}
mysql_close(mysql);

	/////////////////////////////////////////////////
//創建表
	int tmp;
	CString strtmp="";
	mysql=mysql_init(NULL);
	mysql_real_connect(mysql,svr,usr,pwd,db,0,NULL,0);
	mysql_query(mysql,"set names gbk");
	for (i=0;i<tablenum;i++)
	{
		int keyflag=0;
		sql="CREATE TABLE test."+tablename[i]+"(";
		if (!strcmp("0",fieldcalc[i][0]))
		{
			sql+=fieldname[i][0]+" "+fieldtype[i][0];
			if ("TbeaID"==fieldname[i][0])
			{
				sql+=" AUTO_INCREMENT";
				keyflag=1;
			}
			else if("UserID"==fieldname[i][0])
			{
				sql+=" AUTO_INCREMENT";
				keyflag=2;

			}
			int charflag1=strcmp("int",fieldtype[i][0]);
			int charflag2=strcmp("double",fieldtype[i][0]);
			int charflag3=strcmp("datetime",fieldtype[i][0]);
			if (1==charflag1&&1==charflag2&&charflag3)
			{
				sql+=" charater set gbk";
			}
		}
		for (int j=1;j<fieldnum;j++)
		{
			if (!strcmp("0",fieldcalc[i][j]))
			{
				sql+=","+fieldname[i][j]+" "+fieldtype[i][j];
				if ("TbeaID"==fieldname[i][j])
				{
					sql+=" AUTO_INCREMENT";
					keyflag=1;
				}
				else if("UserID"==fieldname[i][j])
				{
					sql+=" AUTO_INCREMENT";
					keyflag=2;
					
				}
				int charflag1=strcmp("int",fieldtype[i][j]);
				int charflag2=strcmp("double",fieldtype[i][j]);
				int charflag3=strcmp("datetime",fieldtype[i][j]);
				if (1==charflag1&&1==charflag2&&charflag3)
				{
					sql+=" charater set gbk";
			}
			}			
		}
		if (1==keyflag)
		{
			sql+=",PRIMARY KEY(TbeaID)";
		}
		if (2==keyflag)
		{
			sql+=",PRIMARY KEY(UserID)";
		}
		keyflag=0;
		sql+=")engine=myisam";
		tmp=mysql_real_query(mysql,sql,(unsigned long)strlen(sql));

		CString strtmp2;
		strtmp2.Format("%d %d\n",i,tmp);
		strtmp+=strtmp2;
	}
	
	mysql_close(mysql);

AfxMessageBox(strtmp);

///////////////////////////////////////////



}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章