CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

HELP(在线等待)

楼主oupj()2002-04-21 17:52:57 在 C++ Builder / 基础类 提问

我想用SQL生成一个名为aa.db的表,以下代码在运行时出错,请各位高手指点  
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
      ADOQuery1->Close();  
      ADOQuery1->SQL->Clear();  
      ADOQuery1->SQL->Add("CREATE   TABLE   aa.db");  
      ADOQuery1->Open();  
  }  
  //---------------------------------------------------------------------------  
  问题点数:10、回复次数:3Top

1 楼wanlucky(博博)回复于 2002-04-21 18:34:21 得分 7

原因很简单,你用的查询控件,主要是用SQL查询,不能用创建表的SQL语句,要想自己创建表,例子如下:  
   
  if   (!Table1->Exists)   //   Don't   overwrite   an   existing   table    
   
  {  
   
      Table1->Active   =   false;   //   The   Table   component   must   not   be   active  
   
      //   First,   describe   the   type   of   table   and   give   it   a   name  
      Table1->DatabaseName   =   "BCDEMOS";  
      Table1->TableType   =   ttParadox;  
   
      Table1->TableName   =   "CustInfo";  
   
      //   Next,   describe   the   fields   in   the   table  
   
      Table1->FieldDefs->Clear();  
      TFieldDef   *pNewDef   =   Table1->AddFieldDef();  
      pNewDef->Name   =   "Field1";  
      pNewDef->DataType   =   ftInteger;  
   
      pNewDef->Required   =   true;  
   
      pNewDef   =   Table1->AddFieldDef();  
   
      pNewDef->Name   =   "Field2";  
      pNewDef->DataType   =   ftString;  
   
      pNewDef->Size   =   30;  
   
      //   Next,   describe   any   indexes  
   
      Table1->IndexDefs->Clear();  
      /*   the   1st   index   has   no   name   because   it   is   a   Paradox   primary   key   */  
      Table1->IndexDefs->Add("","Field1",   TIndexOptions()   <<ixPrimary   <<   ixUnique);    
   
      Table1->IndexDefs->Add("Fld2Index","Field2",   TIndexOptions()   <<   ixCaseInsensitive);  
   
      //   Now   that   we   have   specified   what   we   want,   create   the   table  
   
      Table1->CreateTable();  
  }  
  不要用TADOTable控件,它没有创建表的方法.Top

2 楼888789(yf888789)回复于 2002-04-21 19:38:30 得分 0

试一试将Open()方法改为Exesql()Top

3 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-04-21 20:05:50 得分 3

放置一个TAble和Tquery,Tbatchmove,Tbatchmove设置为从Query到Table,下面的代码把query的结果保存到一个表中.  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
          Query1->Close();  
          Query1->SQL->Clear();  
          Query1->SQL->Add("select   *   from   biolife");  
          try  
          {  
                  Query1->Open();  
          }  
          catch(...)  
          {  
                  ShowMessage("error");  
          }  
          Table1->DatabaseName=Query1->DatabaseName;  
          Table1->TableName   =   Edit2->Text;  
          Table1->FieldDefs->Clear();  
          Table1->FieldDefs->Assign(Query1->FieldDefs);  
          Table1->CreateTable();  
          BatchMove1->Execute();  
          ShowMessage("OK");  
  }  
  //-----Top

相关问题

  • HELP!在线等待!
  • ----->help<------在线等待!!!!!!!!!!!
  • ----->help<------在线等待!!!!!!!!!!!
  • SOS!!! 在线等待!!! HELP ME!!!
  • SOS!!! 在线等待!!! HELP ME!!!
  • SOS!!! 在线等待!!! HELP ME!!!
  • 求救?help??????在线等待!
  • help:--------------->在线热切等待!
  • help:--------------->在线热切等待!
  • help:--------------->在线热切等待!

关键词

  • sql
  • pnewdef
  • fielddefs
  • adoquery
  • query
  • 创建表
  • databasename
  • clear
  • table
  • field

得分解答快速导航

  • 帖主:oupj
  • wanlucky
  • invalid

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo