Delphi- 操作数据库基础

  Delphi其实是一门挺好的语言,有很多优点。在操作数据库这块和C#/.Net有很多相似的地方,也是基于组件的形式,也是基于ADO,我很喜欢这种方式。本文记录一下自己学习了一段时间Delphi后,参考了一下书和源码后,如何操作一下MSSQLSEVER数据库,方便日后查阅。

  一、新建一个Data Module,配置数据库连接字符串(类型于.Net里面的web.Config配置数据库连接字符串)

  这里的单元为FDM,Data Module的名字叫F_DM,之后其他FORM,新建一个ADOQuery都可以在Connection处填上 F_DM.ADOConnection。这样就不用每次新建FORM都去配置连接字符串。

  代码:

  

 1 implementation
 2 
 3 {$R *.dfm}
 4 
 5 procedure TF_DM.DataModuleCreate(Sender: TObject);
 6 var
 7   connStr: string;
 8 begin
 9 
10   try
11     connStr := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=123456;Initial Catalog=StBusinessLeague;Data Source=.';
12     Adoconnection1.ConnectionString := connStr;
13 
14     ADOQuery1.Close;
15     ADOQuery1.SQL.Clear;
16     ADOQuery1.SQL.Add('select * from UserInfo');
17     ADOQuery1.Active := True;
18     ADOQuery1.Open;
19 
20   except
21     Exit;
22   end;
23 end;
24 
25 end.

 

  二、登陆界面的编写

  界面如下截图:

  代码编写如下:

 1 procedure TFormLogin.btnLoginClick(Sender: TObject);
 2 var
 3   strName:string;
 4   strPwd:string;
 5 begin
 6   strName:= edtName.Text;
 7   strPwd:= edtPwd.Text;
 8 
 9 
10   QryLogin.SQL.Clear;
11   QryLogin.SQL.Add('SELECT * FROM UserInfo WHERE UserName=:UserName AND Password=:Password');
12   QryLogin.Parameters.ParamByName('UserName').Value := strName;
13   QryLogin.Parameters.ParamByName('PassWord').Value := strPwd;
14   QryLogin.Open;
15 
16   if QryLogin.RecordCount > 0 then
17     FormMain.ShowModal
18   else
19     ShowMessage('error!');
20 end;
View Code

  三、主界面的编写

  代码如下:

 1 {$R *.dfm}
 2 uses MainAdd, MainUpdate;
 3 procedure TFormMain.FormShow(Sender: TObject);
 4 begin
 5   qryNews.Close;
 6   qryNews.SQL.Clear;
 7   qryNews.SQL.Add('select * from LinkInfo');
 8   qryNews.Open;
 9 end;
10 
11 procedure TFormMain.btnSearchClick(Sender: TObject);
12 var
13   strTitle: string;
14 begin
15 
16   strTitle:= edtName.Text;
17 
18   qryNews.Close;
19   qryNews.SQL.Clear;
20   qryNews.SQL.Add('select * from LinkInfo where LinkName like ''%'+strTitle+'%''');
21   qryNews.Open;
22 end;
23 
24 procedure TFormMain.btnAddClick(Sender: TObject);
25 begin
26   Application.CreateForm(TFormMainAdd,FormMainAdd);
27   FormMainAdd.ShowModal;
28   FormMainAdd.Free;
29 end;
30 
31 procedure TFormMain.btnUpdateClick(Sender: TObject);
32 begin
33   Application.CreateForm(TFormMainUpdate,FormMainUpdate);
34   FormMainUpdate.ShowModal;
35   FormMainUpdate.Free;
36 end;
37 
38 procedure TFormMain.btnDeleteClick(Sender: TObject);
39 var
40   Ids: string;
41 begin
42 
43   try
44     IF Application.MessageBox('是否删除当前记录?','提示',MB_YESNO)= ID_YES then
45       qryNews.Delete;
46   except
47     Application.MessageBox('不能删除','提示',MB_YESNO);
48   end;
49 
50 //  Ids := qryNews.FieldByName('Id').AsString;
51 //  qryNews.Close;
52 //  qryNews.SQL.Clear;
53 //  qryNews.SQL.Add('delete LinkInfo where Id=:Id;');
54 //  qryNews.Parameters.ParamByName('Id').Value := Ids;
55 //  qryNews.ExecSQL;
56 //
57 //  qryNews.SQL.Clear;
58 //  qryNews.SQL.Add('select * from LinkInfo');
59 //  qryNews.Open;
60 
61 end;
62 
63 end.
View Code

  四、更新界面编写

  如下截图:

  

  代码:

uses Main;

procedure TFormMainUpdate.btnOKClick(Sender: TObject);
var
  strSql:string;
  Ids:string;
begin
//    FormMain.qryNews.Edit;
//    FormMain.qryNews.FieldByName('LinkType').AsString:= edtLikeType.Text;
//    FormMain.qryNews.FieldByName('LinkName').AsString:= edtLinkName.Text;
//    FormMain.qryNews.FieldByName('LinkUrl').AsString:= edtLinkUrl.Text;
//    FormMain.qryNews.FieldByName('CreateDate').AsString:= edtCreateDate.Text;
//    FormMain.qryNews.FieldByName('LinkOrder').AsString:=edtOrder.Text;
//    FormMain.qryNews.UpdateRecord;
//    FormMain.qryNews.Post;



    Ids := FormMain.qryNews.FieldByName('Id').AsString;
    strSql:= 'Update LinkInfo set LinkType=:LinkType,LinkName=:LinkName where Id=:Id';
    FormMain.qryNews.Close;
    FormMain.qryNews.SQL.Clear;
    FormMain.qryNews.SQL.Add(strSql);

    FormMain.qryNews.Parameters.ParamByName('Id').Value := Ids;
    FormMain.qryNews.Parameters.ParamByName('LinkType').Value := edtLikeType.Text;
    FormMain.qryNews.Parameters.ParamByName('LinkName').Value := edtLinkName.Text;
    FormMain.qryNews.ExecSQL;

end;

procedure TFormMainUpdate.FormShow(Sender: TObject);
begin

    edtLikeType.Text := FormMain.qryNews.FieldByName('LinkType').AsString;
    edtLinkName.Text := FormMain.qryNews.FieldByName('LinkName').AsString;
    edtLinkUrl.Text := FormMain.qryNews.FieldByName('LinkUrl').AsString;
    edtCreateDate.Text := FormMain.qryNews.FieldByName('CreateDate').AsString;
    edtOrder.Text := FormMain.qryNews.FieldByName('LinkOrder').AsString;

end;

end.

  五、添加界面的编写

  如下截图:

  代码:

  

uses Main;
procedure TFormMainAdd.btnOKClick(Sender: TObject);
var
  strSql:string;

begin
    try

      FormMain.qryNews.Insert;
      FormMain.qryNews.FieldByName('LinkType').AsString:= edtLikeType.Text;
      FormMain.qryNews.FieldByName('LinkName').AsString:= edtLinkName.Text;
      FormMain.qryNews.FieldByName('LinkUrl').AsString:= edtLinkUrl.Text;
      FormMain.qryNews.FieldByName('CreateDate').AsString:= edtCreateDate.Text;
      FormMain.qryNews.FieldByName('LinkOrder').AsString:=edtOrder.Text;
      FormMain.qryNews.UpdateRecord;
      FormMain.qryNews.Post;

    except
       Application.MessageBox('请输入正确的内容','提示',MB_OK);
       Exit;
    end;
    

    
//    strSql:= 'Insert Into LinkInfo(LinkType,LinkName,LinkUrl,CreateDate,LinkOrder) '
//                +'Values(:LinkType,:LinkName,:LinkUrl,:CreateDate,:LinkOrder)';
//    FormMain.qryNews.Close;
//    FormMain.qryNews.SQL.Clear;
//    FormMain.qryNews.SQL.Add(strSql);
//
//    FormMain.qryNews.Parameters.ParamByName('LinkType').Value := edtLikeType.Text;
//    FormMain.qryNews.Parameters.ParamByName('LinkName').Value := edtLinkName.Text;
//    FormMain.qryNews.Parameters.ParamByName('LinkUrl').Value := edtLinkUrl.Text;
//    FormMain.qryNews.Parameters.ParamByName('CreateDate').Value := edtCreateDate.Text;
//    FormMain.qryNews.Parameters.ParamByName('LinkOrder').Value := edtOrder.Text;
//
//    FormMain.qryNews.ExecSQL;

end;

end.

  

posted @ 2014-01-19 12:34  春天又来了  阅读(42)  评论(0)    收藏  举报