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

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.'
不知是何问题,该如何解决?

...全文
432 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.0 编程语言:Visual Studio .NET C# 调试环境:WINDOWS 2000 server 运行环境:需要 Microsoft .NET Framework1.1(dotnetfx.exe 23M) 支持 版 权:完全免费 使用说明: 此程序提供给经常使用SQL server,Oracle 的程序开发人员.(支持SQL Server 6.5 7.0 2000;Oracle 9i) 快速浏览数据,更改数据。提取字段名,表名 制作初始化脚本,查看存储过程。快速浏览数据。 可以省去敲数据表名及字段名的麻烦。对于使用SQl server,Oracle 的人员非常方便。 (如需要VB版,可与我联系,VB版2003年后不再升级) 1.登陆页面添写要连接的数据库参数。确定后进入第二个页面。 2.点击数据库名,显示相应数据库的数据表名。点击数据表名,显示数据表的 字段信息及数据记录(为了显示速度的要求,只显示前500行,如需要全部记录 请点击“执行”按钮)。 3.制作Insert 脚本,省去程序开发人员手工写脚本。 4.所有sql语句都可在sql框中执行。 5.单击字段名,会出现在sql 框中,并会替代框中选中部分,方便输录。 6.数据记录可以增加修改,删除。 7.增加查看和修改存储过程功能。(2003.03.03) 8.修改数据库名与密码的加密方法(2003.06.02) 9.增加SQL Server 2000字段描述(2003-10-10) 10.修改FramkWork1.1下DataGrid不支持滚轮键的bug(2003-10-12) 11.更改菜单及支持6.5的数据库(2003.12) 12.更新datetime字段只能显示日期的bug(2004.3.2) 13.更新错误提示方式。(2004.3.10) 14.更改启动时透明度算法可能会出错的问题。(2004.08.19感谢zhiming99) 15.增加对oracle数据库的支持(测试版本9.2)(2004.12) 16.导出数据方式的更改,可一次导出所有表。(2004.12) 17.标记主键(2004.12) 18.增加显示数据库,数据表的数量.(2005.01) 19.修改数据表过多时出现的乱码问题(2005.02

2,496

社区成员

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

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