求在SQL数据库中如何将数据插入到一个临时表中(100分),在线等。(100分)

  • 主题发起人 主题发起人 LoveDel
  • 开始时间 开始时间
L

LoveDel

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望为每个客户端的用户在查询时都动态的创建一个临时表,用户断开后就将它Drop.
临时表用客户端的IP地址命名,这样的话就不会有冲突了。我用SocketConnection连接
应用服务器,现已经能够获得IP地址函数GetIP().
我该怎么来实现这个功能。
 
adoquery1.sql.text:=format(
'create table [#%s] ([id] int,[name] varchar(10))',
[GetIP()]);
你的会话结束后(连接断开),#开头的临时表会自动删除(SQLSERVER帮你做),当然也可以手工删除
 
这样好象可以,不过执行了该语句后,我看不到结果,程序我改为如下:
procedure Tmainfrm.Button3Click(Sender: TObject);
var s:string;
begin
s:=getips.GetText;
adoquery1.Close;
adoquery1.sql.text:=format('create table [#%s] ([id] int,[name] varchar(10))', );
adoquery1.Open;
end;
是这样吗?怎么看这个临时表。
 
执行后返回错误
adoquery1: commandtextdo
es not return a resault set
怎么返回临时表的内容,我在SQL的数据库中找不到,也不能用dbgrid得到,
是不是没有创建成功呢?
 
procedure Tmainfrm.Button3Click(Sender: TObject);
var s:string;
begin
s:=getips.GetText;
adoquery1.Close;
adoquery1.sql.text:=format('create table [#%s] ([id] int,[name] varchar(10))', );
adoquery1.ExecSQL;
end;
 
小弟在此先谢过了,临时表是创建了,那用什么方法我可使用这个临时表中的内容,或是
返回临时表中的数据资料呢?我用了很多方法,
//adoquery1.Close;
//adoquery1.SQL.Text:='select * from [#%s]';
//adoquery1.Open;
不过都返回说对象[#%s]无效,怎么办而且这样的话数据集关闭了数据表就不在了啊。
 
procedure Tmainfrm.Button3Click(Sender: TObject);
var s:string;
begin
s:=getips.GetText;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.sql.append(format('create table [#%s] ([id] int,[name] varchar(10))', ));
adoquery1.sql.append('Select * From '+format('[#%s]',));
adoquery1.Open;
end;
 
这个不行,返回的是对象名[#%s]无效
 
修改过了
 
其实你根本用不着用什么 IP 地址来做表名,
对于局部临时表,它只在自己的连接内可见。
所有每个客户端根本不存在什么重名问题!
 
to onlyonekgx
你的方法已经通过了。
对于局部临时表,它只在自己的连接内可见。
所有每个客户端根本不存在什么重名问题!
就是说每个客户端对临时表的连接和操作不会影响别的用户的操作是吧。
我的会话结束后(连接断开),#开头的临时表会自动删除(SQLSERVER帮你做),是指adoquery1
的close事件呢,还是指与应用服务器的连接断开呢。我不太明白。
 
樓上說的沒錯,根本不用費心其名稱的問題.
道理樓上已經講了.
所以這樣即可
CREATE TABLE #TEMP(CHE001 Character(4),CHE002 Character(11))
insert into #TEMP(CHE001,CHE002) values(CHE001,CHE002)
 
与应用服务器连接断开之后,局部临时表自动删除!
 
那谢谢各位大哥了,我已经接受答案了
 
接受答案就散分呀!
 
上面说得都对,但对于在SQL上临时创建的数据,在后台应用程序是没有办法可以看到的。所以只能创建真正的表,当然要不重复就使用IP地址,如TABLE_191,等。用完后删除即可,但也可以用一张表,在表中多建一个字段,如IP ADDRESS,这样就可以区分了。
 
to lwdxhp
那么我要建一张真正的表多一个字段IPadr,是不是根据该字段中的IP地址区分用户的
数据资料,如果是的话,当客户端很多的时候该表中的数据是不是很大了,速度就不好
解决了,不过你的方法确实是一个好的方法。怎么样才可以提高速度的问题。显然我在临时表中的数据在用了后要将该用户的数据全部清空的。
 
后退
顶部