这学期数据库的实验比较多,经常设置的就是程序里面的“增删改”三个按钮了。
容错、代码都差不多,贴一份上来留个底,以后不用再敲。
unit UnitChanPin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;
type
TFormChanPin = class(TForm)
ButtonAdd: TButton;
ADOConn: TADOConnection;
ADOQshow: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQadd: TADOQuery;
LabelCPno: TLabel;
LabelCPMingCheng: TLabel;
EditCPno: TEdit;
EditMingCheng: TEdit;
ButtonDel: TButton;
ButtonUpdate: TButton;
ADOQdel: TADOQuery;
ADOQupdate: TADOQuery;
ButtonExit: TButton;
LabelAbout: TLabel;
procedure FormCreate(Sender: TObject);
procedure ButtonAddClick(Sender: TObject);
procedure cpcellclick(Column: TColumn);
procedure ButtonDelClick(Sender: TObject);
procedure ButtonUpdateClick(Sender: TObject);
procedure ButtonExitClick(Sender: TObject);
procedure LabelAboutClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormChanPin: TFormChanPin;
nullSender: TObject;
implementation
{$R *.dfm}
//获取数据浏览区中某行的数据并自动填入员工编号输入区、员工姓名输入区
procedure TFormChanPin.cpcellclick(Column: TColumn);
begin
editcpno.Text:=dbgrid1.DataSource.DataSet.Fields[0].AsString;
editmingcheng.Text:=dbgrid1.DataSource.DataSet.Fields[1].AsString;
end;
//显示产品表信息
procedure TFormChanPin.FormCreate(Sender: TObject);
var
sqlshow:String;
begin
sqlshow:='select * from ChanPin';
adoqshow.Connection:=adoconn;
adoqshow.SQL.Text:=sqlshow;
adoqshow.Open;
end;
//添加新产品信息
procedure TFormChanPin.ButtonAddClick(Sender: TObject);
var
sqlAdd:String;
name:String;
begin
name:=editmingcheng.Text;//获取输入数据
if(name='') //未输入数据
then
begin
messagedlg('请输入产品名称!',mterror,[mbok],0);
exit;
end
else
begin
//判断输入名称是否已存在于数据库
sqladd:='select * from ChanPin where MingCheng='''+name+'''';
adoqadd.Connection:=adoconn;
adoqadd.SQL.Text:=sqladd;
adoqadd.Open;
if(adoqadd.IsEmpty=false)//若数据已存在,isempty=false
then
begin
messagedlg('该产品名称已存在!',mterror,[mbok],0);
exit;
end;
adoqadd.Close;
//执行添加语句
sqlAdd:='insert into ChanPin values('''+name+''')';
adoqadd.Connection:=adoconn;
adoqadd.SQL.Text:=sqlAdd;
//执行SQL语句
try
adoqadd.ExecSQL;
messagedlg('输入成功!',mtinformation,[mbok],0);
editcpno.Text:='';
editmingcheng.Text:='';
except
messagedlg('输入失败!请检查输入是否符合规范。',mterror,[mbok],0);
exit;
end;
formcreate(nullsender);//显示添加后的数据
end;
end;
//删除产品表中某产品的数据
procedure TFormChanPin.ButtonDelClick(Sender: TObject);
var
sqldel:String;
cpno,name:String;
DelBoxReturn:word;//用户是否确定删除
begin
cpno:=editcpno.Text;
name:=editmingcheng.Text;
//判断是否已选择需要删除的数据
if(cpno='') //未输入数据
then
begin
messagedlg('未选择数据!'+chr(13)+'请在浏览区选择需要删除的产品',mterror,[mbok],0);
exit;
end
else//用户已选择需要删除的数据
//弹出提示框询问用户是否确定删除被选中的数据
delboxreturn:=messagedlg(pchar('确定删除 '''+name+'''?'),mtwarning,[mbyes,mbno],0); //确定是否删除该数据
if(delboxreturn=6) //用户选择“确定”,即继续删除操作
then
begin
begin
sqldel:='delete from ChanPin where CPno='''+cpno+'''';
adoqdel.Connection:=adoconn;
adoqdel.SQL.Text:=sqldel;
try
adoqdel.ExecSQL;
messagedlg('删除成功!',mtinformation,[mbok],0);
editcpno.Text:='';
editmingcheng.Text:='';
except
messagedlg('删除失败!',mterror,[mbok],0);
exit;
end; //运行删除操作的SQL语句
formcreate(nullsender);//显示删除后的数据
end;
end//用户选择“确定”
else //用户选择“取消”,即取消删除操作
begin
exit;
end; //用户选择”取消“,不执行删除SQL语句,直接结束删除操作
end;
//更新产品表中的产品信息
procedure TFormChanPin.ButtonUpdateClick(Sender: TObject);
var
sqlupdate:String;
cpno,name:String;
begin
cpno:=editcpno.Text;
name:=editmingcheng.Text;
if(cpno='') //未输入数据
then
begin
messagedlg('未选择数据!'+chr(13)+'请在浏览区选择需要更新的产品。',mterror,[mbok],0);//弹出提示,要求用户输入数据
exit;
end
else
//判断输入名称是否已存在于数据库
sqlupdate:='select * from ChanPin where MingCheng='''+name+'''';
adoqupdate.Connection:=adoconn;
adoqupdate.SQL.Text:=sqlupdate;
adoqupdate.Open;
if(adoqupdate.IsEmpty=false)//若数据已存在,isempty=false
then
begin
messagedlg('该产品名称已存在!',mterror,[mbok],0);
exit;
end;
begin //进行更新
sqlupdate:='update ChanPin set MingCheng='''+name+''' where CPno='''+cpno+'''';
adoqupdate.Connection:=adoconn;
adoqupdate.SQL.Text:=sqlupdate;
try
adoqupdate.ExecSQL;
messagedlg('更新成功!',mtinformation,[mbok],0);
editcpno.Text:='';
editmingcheng.Text:='';
except
messagedlg('更新失败!请检查输入数据是否符合规范。',mterror,[mbok],0);
exit;
end;
formcreate(nullsender);//显示更新后的数据
end;
end;
procedure TFormChanPin.ButtonExitClick(Sender: TObject);
begin
close;
end;
procedure TFormChanPin.LabelAboutClick(Sender: TObject);
begin
messagedlg('MadeBy Ida+chr(13)+'Jan.12,2010',mtinformation,[mbok],0);
end;
end.