对表A增加字段B,非关键字,char(10),不能为空,默认值‘’ Alter Table A add B char(10) not null default ('') 对表A增加字段C,非关键字,Float,不能为空,默认值0.00 Alter Table A add C Float not null default (0.00)删除字段和修改字段最好不要给用户使用因为很容易丢失数据。
添加:ADOQuery1.close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.add('insert into 表名(字段名) values(你要加 的 值) ');
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, RzLstBox, RzChkLst, RzButton, ExtCtrls, RzPanel;type
TviewtypeF = class(TForm)
RzGroupBox1: TRzGroupBox;
Addlxlx: TRzBitBtn;
Dellxlx: TRzBitBtn;
Editlxlx: TRzBitBtn;
exitlf: TRzBitBtn;
RzCheckList1: TRzCheckList;
procedure AddlxlxClick(Sender: TObject);
procedure DellxlxClick(Sender: TObject);
procedure EditlxlxClick(Sender: TObject);
procedure exitlfClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzCheckList1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
viewtypeF: TviewtypeF;implementationuses Unit3;{$R *.DFM}procedure TviewtypeF.AddlxlxClick(Sender: TObject);
var
Inputyn:boolean;
fieldname,lxlxSQL:string;
begin
try
Inputyn:= InputQuery('ÇëÊäÈë', 'ÇëÊäÈëÒ»¸öеÄÁªÏµÀàÐÍ£º ', fieldname);
if Inputyn then
begin
rzchecklist1.Items.Add(trim(fieldname));
{ DataModule3.lxlxQ.close;
DataModule3.lxlxQ.sql.clear;
DataModule3.lxlxQ.sql.add('ALTER TABLE ÁªÏµÀàÐÍ ADD '+trim(fieldname)+' BIT');
DataModule3.lxlxQ.ExecSQL;}
lxlxSQL:='ALTER TABLE ÁªÏµÀàÐÍ ADD '+trim(fieldname)+' BIT';
DataModule3.ADOConnection1.Execute(lxlxSQL);
DataModule3.ADOConnection1.Close;
DataModule3.ADOConnection1.Open;
DataModule3.cpreg.Open;
DataModule3.cpreg.Active:=true;
DataModule3.lxlxT.Open;
DataModule3.lxlxT.Active:=true;
rzchecklist1.Selected[0];
end;
except
showmessage('Êý¾ÝÌí¼Ó³ö´í!');
end;
end;procedure TviewtypeF.DellxlxClick(Sender: TObject);
var
lxlxSQL:string;
begin
try
{ DataModule3.lxlxQ.close;
DataModule3.lxlxQ.sql.clear;
DataModule3.lxlxQ.sql.add('ALTER TABLE ÁªÏµÀàÐÍ DROP '+trim(rzchecklist1.SelectedItem));
DataModule3.lxlxQ.ExecSQL;}
lxlxSQL:='ALTER TABLE ÁªÏµÀàÐÍ DROP '+trim(rzchecklist1.SelectedItem);
DataModule3.ADOConnection1.Execute(lxlxSQL);
rzchecklist1.DeleteSelectedItems;
DataModule3.ADOConnection1.Close;
DataModule3.ADOConnection1.Open;
DataModule3.cpreg.Open;
DataModule3.cpreg.Active:=true;
DataModule3.lxlxT.Open;
DataModule3.lxlxT.Active:=true;
rzchecklist1.SetFocus;
Addlxlx.Enabled:=true;
Dellxlx.Enabled:=false;
Editlxlx.Enabled:=false; except
showmessage('Êý¾Ýɾ³ý³ö´í!');
end;
end;procedure TviewtypeF.EditlxlxClick(Sender: TObject);
var
i:integer;
FNameLST:Tstringlist;
Inputyn:boolean;
fieldname,selcheck:string;
begin
try
selcheck:=rzchecklist1.SelectedItem;
Inputyn:= InputQuery(rzchecklist1.SelectedItem+'¸ÄÃûΪ£º', 'ÇëÊäÈëеÄÁªÏµÀàÐÍÃû³Æ£º ', fieldname);
if Inputyn then
begin
try
if DataModule3.ADOConnection1.InTransaction=false then
begin
DataModule3.ADOConnection1.BeginTrans; DataModule3.lxlxQ.close;
DataModule3.lxlxQ.sql.clear;
DataModule3.lxlxQ.sql.add('alter table ÁªÏµÀàÐÍ add '+trim(fieldname)+' bit');
DataModule3.lxlxQ.ExecSQL;
DataModule3.lxlxQ.close;
DataModule3.lxlxQ.sql.clear;
DataModule3.lxlxQ.sql.add('update ÁªÏµÀàÐÍ set '+trim(fieldname)+'='+rzchecklist1.SelectedItem);
DataModule3.lxlxQ.ExecSQL;
DataModule3.lxlxQ.close;
DataModule3.lxlxQ.sql.clear;
DataModule3.lxlxQ.sql.add('alter table ÁªÏµÀàÐÍ drop '+rzchecklist1.SelectedItem);
DataModule3.lxlxQ.ExecSQL;
{ DataModule3.lxlxQ.Close;
DataModule3.lxlxQ.Open;
lxlxSQL1:='alter table ÁªÏµÀàÐÍ add '+trim(fieldname)+' bit';
lxlxSQL2:='update ÁªÏµÀàÐÍ set '+trim(fieldname)+'='+selcheck;
lxlxSQL3:='alter table ÁªÏµÀàÐÍ drop '+selcheck;
DataModule3.ADOConnection1.Execute(lxlxSQL1);
// DataModule3.ADOConnection1.Close;
// DataModule3.ADOConnection1.Open; DataModule3.ADOConnection1.Execute(lxlxSQL2);
// DataModule3.ADOConnection1.Close;
// DataModule3.ADOConnection1.Open; DataModule3.ADOConnection1.Execute(lxlxSQL3);
// rzchecklist1.Items.SetText(Pchar(fieldname));
// rzchecklist1..settext:=fieldname;
} DataModule3.ADOConnection1.CommitTrans;
DataModule3.ADOConnection1.Close;
DataModule3.ADOConnection1.Open;
DataModule3.cpreg.Open;
DataModule3.cpreg.Active:=true;
DataModule3.lxlxT.Open;
DataModule3.lxlxT.Active:=true;
rzchecklist1.SetFocus;
Addlxlx.Enabled:=true;
Dellxlx.Enabled:=false;
Editlxlx.Enabled:=false; end;
except
DataModule3.ADOConnection1.RollbackTrans;
end; end;
rzchecklist1.Items.Clear;
FNameLST:= TStringList.Create;
DataModule3.lxlxT.GetFieldNames(FNameLST);
for i:=2 to FNameLST.Count-1 do
begin
rzchecklist1.Items.Add(FNameLST.Strings[i]);
end;
FNameLST.Free;
except
showmessage('¸ÄÃû·¢Éú´íÎó!');
end;end;procedure TviewtypeF.exitlfClick(Sender: TObject);
begin
close;
end;procedure TviewtypeF.FormShow(Sender: TObject);
var
i:integer;
FNameLST:TStringList;
begin
rzchecklist1.Items.Clear;
FNameLST:= TStringList.Create;
DataModule3.lxlxT.GetFieldNames(FNameLST);
for i:=2 to FNameLST.Count-1 do
begin
rzchecklist1.Items.Add(FNameLST.Strings[i]);
end;
FNameLST.Free;
Addlxlx.Enabled:=true;
Dellxlx.Enabled:=false;
Editlxlx.Enabled:=false;
end;procedure TviewtypeF.RzCheckList1Click(Sender: TObject);
begin
Addlxlx.Enabled:=true;
Dellxlx.Enabled:=true;
Editlxlx.Enabled:=true;end;end.
我水平太低,你略微解释一下可以吗?
zfq308(富强)
在详细说一下你的方法,好吗
简单的讲,就是在delphi里用带参数的SQL语句修改表结构
alter 表 add column 列名 类型 长度
procedure TviewtypeF.AddlxlxClick(Sender: TObject);
procedure TviewtypeF.DellxlxClick(Sender: TObject);
procedure TviewtypeF.EditxlxClick(Sender: TObject);
CheckList作为编辑界面,以显示数据库字段名
RzGroupBox; RzBitBtn; RzBitBtn; RzBitBtn; RzBitBtn;RzCheckList 这是些什莫组件?就是GroupBox; BitBtn......组件吗?
控件变成普通控件应该也可以,但有些数据库不支持修改字段名字,比如oracle8i
Alter Table A add B char(10) not null default ('')
对表A增加字段C,非关键字,Float,不能为空,默认值0.00
Alter Table A add C Float not null default (0.00)删除字段和修改字段最好不要给用户使用因为很容易丢失数据。
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('insert into 表名(字段名) values(你要加 的 值) ');
ADOQuery1.ExecSQL;
删除:就需要把ADOQuery1.SQL.add('后面的sql语句改成delete ....(自己知道把)
修改:就需要把ADOQuery1.SQL.add('后面的sql语句改成update ...
着不是就好了吗??
不知道还有没有更好的方法?!
:)