永发信息网

使用create table 后立即执行insert into,结果不识别新建立的表?

答案:3  悬赏:0  手机版
解决时间 2021-02-05 05:14
  • 提问者网友:遮云壑
  • 2021-02-04 23:54
strsql := 'create Table "bbb" ("b1" Integer)';
with dm.ClientDataSet_Public do
begin
if Active then Active:=True;
CommandText := strsql;
Execute;
end;

strsql := 'insert into "bbb" values(10)';
with dm.ClientDataSet_Temp do
begin
if Active then Active:=True;
CommandText := strsql;
Execute;
end;
我是在三层模式下编程的,需要在程序中动态建表。如果在程序中先动态建表,退出程序,然后再运行程序中的(insert into ...)则正确,如果建表后,马上再insert into。。。则就不识别新建的表,不知为什么?我使用Delphi与InterBase7.1数据库。
谢谢各位仔细一些,是 如果建表create table 后,马上再insert into。。。则就不识别新建的表
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-02-05 00:46
首先
strsql:= 'create Table bbb(b1 Int)';这样写就行了
然后在建表时通常考虑该表是否存在,即:
strsql:= 'if exists(select name from sysobjects where name='bbb' and type='u') begin drop table bbb end ';
strsql:=strsql+' create Table bbb(b1 Int) '

我用adoquery重来没碰过这种情况,我是在两层结构下开发的,用execsql,都可以
全部回答
  • 1楼网友:街头电车
  • 2021-02-05 02:48
create table 是定义表有哪些列,主键是什么,各个列的数据类型是什么,有没有外键等等。 而insert into 是往一个建立好的表里边按照各个列的数据类型插入数据的。
  • 2楼网友:酒醒三更
  • 2021-02-05 02:00
呵呵 为什么不先把表建好 这样我觉得麻烦了!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯