怎样动态地给数据库增加或修改字段名

jijun 2000-07-06 05:32:00
为了在程序运行中动态地给数据库增加或修改字段名,我用
quyCj.Close;
quyCj.SQL.clear;
quyCj.SQL.Add('ALTER TABLE <数据库名> ');
quyCj.SQL.Add('ADD <字段名> CHAR(8)');
quyCj.Open;
但在运行时出错: 'Table is busy.'
不知是何问题,该如何解决?

...全文
430 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jijun 2000-07-20
  • 打赏
  • 举报
回复
虽然上述几位网友的回复没有解决问题,但我查找了有关资料终于使问题得到解决,以下是解决的方法,写出来供有兴趣者参考。
首先在Form上再放置一个Query1(原来已放置了一个QuyCj),DataSource1的DataSet为Query1,QuyCj不与DataSource连接。在执行代码如下:
procedure TfrmLrCj.bntKsClick(Sender: TObject);
begin
quyCj.Close;
quyCj.SQL.clear;
quyCj.SQL.Add('ALTER TABLE ''CJ.dbf''');
quyCj.SQL.Add('ADD ZZKq1 CHAR(8)');
quyCj.ExecSQL;
query1.SQL.Clear;
query1.SQL.Add('Select * From ''d:\djx\dbf\CJ.dbf'' ');
query1.Open;
end;
jijun 2000-07-13
  • 打赏
  • 举报
回复
所有回答问题的方法都不能解决问题。
还有谁能帮我真正解决问题?
fstao 2000-07-08
  • 打赏
  • 举报
回复
这个问题是要把相关的表关闭,然后才能动态添加修改字段。
wsf 2000-07-07
  • 打赏
  • 举报
回复
不是加上,而是替换open.还有先确认别的地方没有打开此表。
jijun 2000-07-07
  • 打赏
  • 举报
回复
我的全部代码如下:
quyCj.Close;
quyCj.SQL.clear;
quyCj.SQL.Add('ALTER TABLE CJG7199');
quyCj.SQL.Add('ADD ZZK CHAR(8)');
quyCj.Open;
quyCj.Active:=True;
我试了Hank提出的方法,加上了
quyCj.ExecSQL;
仍然出现同样的出错提示,但"Table"并没有打开。
我用的数据库表为Paradox7。
Hank 2000-07-07
  • 打赏
  • 举报
回复
下面两段代码在DELPHI5.0中通过,不过很不幸的是:正如jijun说的,出现'Table is busy'提示,不过有时可以,又是又不可以。记得:此时不能用Open或Active将Query激活!代码如下:
procedure TForm5.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('ALTER TABLE COLOR ADD CDFX CHAR(8)');
Query1.ExecSQL;
end;

procedure TForm5.Button2Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('ALTER TABLE COLOR DROP CDFX');
Query1.ExecSQL;
end;

可惜以上在SQL Explorer中可以运行!可能是DELPHI的问题。
Hank 2000-07-06
  • 打赏
  • 举报
回复
我没有看到你的全部代码,但是最后一句肯定有错,因为你没有返回数据,应为:
quyCj.ExecSQL;
另外,针对不同的数据库也不一样,有的数据库必须建立索引!

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧