您的位置:首页 > 数据库 > MySQL

贴一段从xml操作mysql创建表的代码,备忘

2011-12-18 00:39 344 查看
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);

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: