怎么动态创建sql表,主要是表的名字不能用动态变量去赋值,就不知道怎么写了

huanyanfei5003 2018-07-02 02:18:40
var
date: string;

date:=Datetostr(DateTimePicker1.date);//比如今天201872
date:=FormatDateTime('yyyymmdd',now());
ADOQuery1.sql.Add(Format('Create Table ''%s''',[date]));
想要根据日期动态的创建表,但是sql规定不能直接用变量当表的名字,用format也不行,会报错 说201872语法有问题
...全文
466 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2018-07-02
  • 打赏
  • 举报
回复
引用 4 楼 huanyanfei5003 的回复:
[quote=引用 3 楼 hj3000 的回复:]
ADOQuery1.sql.Add(Format('Create Table [%s]',[date]));


不行报错
[/quote]

楼主,你应该先熟悉数据库的DDL,再来做这方面开发。

try
date:=FormatDateTime('yyyymmdd',Now());
//mysql语法
sql := Format('create table `%s`(No varchar(20),Name varchar(20),className varchar(20))',[date]);
//sql server语法
//sql := Format('create table [%s](No varchar(20),Name varchar(20),className varchar(20))',[date]);
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;
except
end;
hj8090 2018-07-02
  • 打赏
  • 举报
回复
ADOQuery1.sql.Add(Format('Create Table [%s]',[date]));
--这里还有字段部分,你没有写。
ADOQuery1.ExecSql;
huanyanfei5003 2018-07-02
  • 打赏
  • 举报
回复
引用 3 楼 hj3000 的回复:
ADOQuery1.sql.Add(Format('Create Table [%s]',[date]));


不行报错
hj8090 2018-07-02
  • 打赏
  • 举报
回复
ADOQuery1.sql.Add(Format('Create Table [%s]',[date]));
huanyanfei5003 2018-07-02
  • 打赏
  • 举报
回复
想的办法还是不行,ADOQuery1.sql.Add('delcale @date varchar(20);set @date = format(now(),YYYYMMDD);creat table '+@date+'');
报错,说不能是指针
huanyanfei5003 2018-07-02
  • 打赏
  • 举报
回复
想到一个办法试试

2,497

社区成员

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

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