ado连接sql数据库,动态创建有固定字段和“不固定字段”(来自另一个表)的sql表,创建表成功,但表中固定字段有,但是“不固定字段”没有,怎么写?我的代码如下:
//检查汇总目录表中是否已存在该表{我把创建成功的表名都放在“汇总目录”表中}
adoquery3.Close;
adoquery3.SQL.Clear ;
adoquery3.SQL.Add('select 表名 from 汇总目录');
adoquery3.Open ;
kg:=true;
with adoquery3 do
begin
while not eof do
begin
if cxtextedit1.Text=fieldbyname('表名').AsString then kg:=false;
next;
end;
end;
if kg=false
then showmessage('此表已经存在,请更换名称,或先删除该表。')
else
begin
//向汇总目录表中添加数据
adoquery3.Close;
adoquery3.SQL.Clear;
adoquery3.SQL.Add('Insert into 汇总目录');
adoquery3.SQL.Add('values('''+cxtextedit1.Text+''')');
adoquery3.ExecSQL ;
//创建一个汇总表的固定字段
adoquery3.Close ;
adoquery3.SQL.Clear ;
adoquery3.SQL.Add('create table '+cxtextedit1.Text+'(编号 int,姓名 nvarchar(10),总分 int,名次 int)') ;
//创建汇总表的不固定字段,来自cm_1表的xmmc字段。
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select xmmc from xm_1');
adoquery2.Open;
with adoquery2 do
begin
while not eof do
begin
xm:=fieldbyname('xmmc').AsString ;
{adoquery3.SQL.Add('alter table'+cxtextedit1.Text+'add column'+xm+'int');}
next;
end;
adoquery3.ExecSQL ;
adoquery3.SQL.Clear ;
showmessage('数据表创建完成!');
end;
end;
通过ado的query或table如何删除sql表,代码怎么写?
//检查汇总目录表中是否已存在该表{我把创建成功的表名都放在“汇总目录”表中}
adoquery3.Close;
adoquery3.SQL.Clear ;
adoquery3.SQL.Add('select 表名 from 汇总目录');
adoquery3.Open ;
kg:=true;
with adoquery3 do
begin
while not eof do
begin
if cxtextedit1.Text=fieldbyname('表名').AsString then kg:=false;
next;
end;
end;
if kg=false
then showmessage('此表已经存在,请更换名称,或先删除该表。')
else
begin
//向汇总目录表中添加数据
adoquery3.Close;
adoquery3.SQL.Clear;
adoquery3.SQL.Add('Insert into 汇总目录');
adoquery3.SQL.Add('values('''+cxtextedit1.Text+''')');
adoquery3.ExecSQL ;
//创建一个汇总表的固定字段
adoquery3.Close ;
adoquery3.SQL.Clear ;
adoquery3.SQL.Add('create table '+cxtextedit1.Text+'(编号 int,姓名 nvarchar(10),总分 int,名次 int)') ;
//创建汇总表的不固定字段,来自cm_1表的xmmc字段。
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select xmmc from xm_1');
adoquery2.Open;
with adoquery2 do
begin
while not eof do
begin
xm:=fieldbyname('xmmc').AsString ;
{adoquery3.SQL.Add('alter table'+cxtextedit1.Text+'add column'+xm+'int');}
next;
end;
adoquery3.ExecSQL ;
adoquery3.SQL.Clear ;
showmessage('数据表创建完成!');
end;
end;
通过ado的query或table如何删除sql表,代码怎么写?
语句为drop table tablename
楼主用中文命名表和字段似乎有点自寻烦恼...呵呵
中文其实也好啊
创建表我刚才已经成功了
很不错啊,原来只是多了个column,为什么add column中不能有column,怪,呵呵。
现在主要是删除表不行,我也知道 drop table tablename,可不行啊 我再试试
sSql : string;
begin
sSql := ' create table TestTableName ( ' +
' aTest varchar2(4),' +
' bTest number(19,6))'; //新加表
with AdoQuery1 do begin
close;
sql.clear;
sql.add(sSql);
ExecSql;
end;
end;
//删除表可将sSql写成: sSql := ' Drop table TestTableName ';
//修改表可将sSql写成: sSql := ' Alter TestTableName ......';