更改数据表名称(100分)

  • 主题发起人 主题发起人 shenyfei
  • 开始时间 开始时间
S

shenyfei

Unregistered / Unconfirmed
GUEST, unregistred user!
我想更改SQL7.0数据表名称,不知哪位大侠能告知!
 
利用Enterprise Manager工具,直接就可以修改表的名称,就像资源
管理器当中修改文件名一样。不过你需要注意,更改表的名称之后,
触发器和主外键一类的东西会有影响。
难道你是想在程序当中动态的修改吗?
 
如果在设计的时候改就用鼠标右键点表名然后选择重命名。
如果要在运行时修改就用SQL语句,例如:
EXEC sp_rename 'table1', 'table2'
上面的语句就可以把表名改掉。
 
是想在程序里动态修改。
 
另外我想起一件事情:谁解决了数据表里一条记录其中一个字段联接一个WORD文档, 我的方法是保存路径如:"d:/s/s.word"但问题是c/s中client上盘付不一样,最好象louts notes那样.
 
在程序中动态修改就象我说的
Query1.Sql.Text := 'EXEC sp_rename ''table1'', ''table2''';
然后执行就可以了。
关联WORD文档得看你的WORD文档是放哪儿。如果是在服务器上,用一个共享
路径就可以了。如果在客户端上,那就不好办,即使你记下路径也会被人移动,
下次会找不到。还有一个办法就是如果文档不是太大就直接放到数据库里面,
用的时候用SavetoFile把它从数据库中揪出来放到临时目录下打开浏览。
 
可以接受adminis的回答,不过还想请adminis帮个忙,我
建立了一个数据库的结构数据表,再想通过该表动态
建立数据表如何做到?thank very much!
 
用SQL自带的 isql 或 osql 实用程序.
具体用法查 books online
 
想动态建表也是写SQL语句啊。从你的数据库结构表中读出记录,知道
每个表的结构,然后用一条语句:
CREATE TABLE tablename(SaleID INT ,
SaleName CHAR(10),
..... )
其中saleid,salename这些字段名和字段类型、字段长度(小数位数等等)
都从你的数据库结构表中读出来,得到上面的一个完整的语句,放到
Query里面执行就可以了。

 
我的程序:
MessageDlg('系统将建立你定义的数据表!',mtInformation,[mbOk],0);
query2.first;
query1.Close;
query1.SQL.Clear;
// query1.sql.Add('creat table '+table_name+'');
while not query2.Eof do//建立新表
begin
zd_name:=query2.fieldbyname('fieldname').asstring;
zd_type:=query2.fieldbyname('fieldtype').asstring;
zd_len:=query2.fieldbyname('fieldlen').asstring;
if zd_type='字符型' then zd_type:='varchar'
else if zd_type='数字型' then
begin
zd_type:='int';
zd_len:='';
end
else if zd_type='逻辑型' then zd_type:='bit'
else if zd_type='日期型' then zd_type:='datetime'
else zd_type:='varchar';
if (zd_len>'1') or (zd_len>'100') then zd_type:='1';
if not query2.Eof then
// query1.sql.add('+zd_name+'+''+'+zd_type+'+'('+'+zd_len+'+')'+','
else
query_sql:=query_sql+'+zd_name+'+''+'+zd_type+'+'('+'+zd_len+'+')';
query2.Next;
end;
query1.sql.Add('creat table '+table_name+' ( +zd_name+' +zd_type+ ('+zd_len+'))');
query1.ExecSQL;
close;
end;
end;
要出错!
 
动态建立数据库的问题已解决!谢谢各位!
源码:
while not query2.Eof do//建立新表
begin
zd_name:=query2.fieldbyname('fieldname').asstring;
zd_type:=query2.fieldbyname('fieldtype').asstring;
zd_len:=query2.fieldbyname('fieldlen').asstring;
if zd_type='字符型' then
begin
zd_type:='varchar';
query_sql:=query_sql+','+zd_name+' '+zd_type+'('+zd_len+')';
end
else if zd_type='数字型' then
begin
zd_type:='int';
query_sql:=query_sql+','+zd_name+' '+zd_type;
end
else if zd_type='逻辑型'
then
begin
query_sql:=query_sql+','+zd_name+' '+'bit default 0 not null';
end
else if zd_type='日期型'
then
begin
query_sql:=query_sql+','+zd_name+' '+ 'smalldatetime';
end
else zd_type:='varchar';
query2.Next;
end;
delete(query_sql,1,1);
query_sql:='create table '+table_name+'('+query_sql+')';
query1.sql.Add(query_sql);
query1.ExecSQL;
close;
end;
end;
我若证实adminis的改表名答案既给分!
 
接受答案了.
 
后退
顶部