贴一段从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); /////////////////////////////////////////// }
相关文章推荐
- 一段旧代码 ———— linux下C语言操作mysql
- 这里是MYSQL操作的C语言代码,我贴几个,你们看吧333
- GITHUB创建仓库,分享代码(纯客户端操作)
- MySql创建带解释的表及给表和字段加注释的实现代码
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- ASP.NET对XML进行读,改,删操作代码_2
- java中(DOM,SAX,JDOM,DOM4J)操作xml方式的比较和代码示例
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- context.xml 连接池代码 mysql
- C# XML操作 代码大全
- Java文件IO操作工具类(复制、删除、重命名、创建路径),复制代码并创建FileControl类即可使用。
- C++代码操作MYSQL
- Dom4J对XML的创建、修改、删除等操作
- 对XML进行创建,读取,追加,删除节点的操作
- Python操作Mysql实例代码
- 分享一段ios数据库代码,包括对表的创建、升级、增删查改
- JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
- mysql用户创建与权限的操作
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联 解决代码