使用alter 添加字段出错(100分)

  • 主题发起人 主题发起人 yc-zhj
  • 开始时间 开始时间
Y

yc-zhj

Unregistered / Unconfirmed
GUEST, unregistred user!
我在是用下面的程序段是总出错
query1.close;
query1.sql.clear;
query1.sql.add('alter table xxx');
query1.sql.add('add yyy');
query1.sql.add('char(123)');
query1.query.ExecSQL;
我运行这段程序。电脑就出现:
project manprj.exe vaised exception class EDBEngineError whith message
“table is busy'的错误
就不让我添加字段。但是如果我一开始就把table1.active:=false;在以后也一直不打开这个表进行操作
就可以添加字段,这段程序也不会出错;但是如果我把table1.active:=true;不管我随后如何运行table1.active:=false;
table1.open;我只要一添加字段,程序就会出现:”table is busy“的错误
我不知道为什么会出现这样的错误?我只把表打开了一次,为什么就在也关不了,
不知到用什么方法可以不出现这种错误,让表空闲?
上面的例子中:xxx:表名
yyy:将要添加的字段;

 
用以下方式可以实现
s:='';
s:='alter table tablename add yyy char(10)';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(s);
query1.ExecSQL;
 
我试过那样的确没任何问题,是不是表的数据太多造成的这样的错误
 
可能是你的程序中某个地方打开了表使用完后没有关闭!
这样不允许改变表结构的。
你找到每个Open的地方,确认使用完后Close。
 
我使过了不行,我已经把表关闭了,
表的状态肯定是:inavtive;
可还是出现这中情况,我真的不知道为什么关不了这个表?
 
你在alter之前调用close是没有用的。
要确定每次open的地方都close了。
你可以重启机器,到database desktop里面看能不能改变结构!
 
要对表结构进行修改,必须关闭所有的相关数据集的,
使用SQL是不错的方法.楼上说的也行.
修改表结构DELPHI中有示例的.
 
query1.close;
query1.sql.clear;
query1.sql.add('alter table xxx');
query1.sql.add(' add yyy');
query1.sql.add(' char(123)');
query1.query.ExecSQL;
试试这样你没有空格
 
”table is busy“的错误
可能是因为你是在程序设计调试状态运行程序,而此时你的DELPH中已经打开了表
请关了DELPHI试一下
 
adoquery1.sql.clear;
adoquery1.sql.text:='alter table xxx add char(123)';
adoquery1.execSQL;
在各个关键字和表名,字段之间要有空格
 
在属性页上将query的属性设为false.
另,
还有一种可能就是,在之前有关此表的事务未结束。
 

Similar threads

后退
顶部