delphi 实用教程

Click here to load reader

Upload: percy

Post on 11-Jan-2016

138 views

Category:

Documents


3 download

DESCRIPTION

Delphi 实用教程. 第 8 章 数据库编程. 8.1 数据库应用程序的构成 8.1.1 客户机 / 服务器体系结构. 1. 客户机 / 服务器( Client/Server )模型 客户机 / 服务器( C/S )代表了软件实体(如进程、对象)之间相互作用时的一种最典型的模式和相互关系。在这种模式中,服务器实现了某种功能,客户机则以某种方式从服务器处获得这种功能。. 客户机 / 服务器结构. 8.1.1 客户机 / 服务器体系结构. 服务器软件与客户机软件的功能分布见表。. 客户机 / 服务器功能. 8.1.1 客户机 / 服务器体系结构. - PowerPoint PPT Presentation

TRANSCRIPT

  • Delphi8

    8

  • 8.18.1.1 / 1. /Client/Server/C/S /

    8

  • 8.1.1 / /

    8

  • 8.1.1 /2. SQL Server 2000 DelphiSQL Server 2000RDBMS/C/SC/S

    8

  • 8.1.2 Delphi

    8

  • 8.1.2 Delphi12DelphiForm Table QueryDatabaseSessionStoredProc Delphi FileNewData Module

    8

  • 8.1.2 Delphi3 Data Access4 BDEADO

    8

  • 8.1.2 Delphi5BDEODBCADO

    8

  • 8.1.2 Delphi2. 1

    8

  • 8.1.2 Delphi 2 BDEADOBDEADO

    8

  • 8.1.2 Delphi3

    8

  • 8.1.3 Delphi

    8

  • 1.1FileNewApplication 2Data AccessDataSource

    3BDETable

    8

  • 1.4Data ControlDBGrid DBNavigatorDBGrid DBNavigator

    DBGrid DBNavigator

    8

  • 1.5

    8

  • 2. 1FileNewApplication 2FileNewData Module3DataSource Table

    4DBGrid DBNavigator

    8

  • 2.5DMUStuFormMain 6FileUse UnitDMUStuOKFormMainuses DMUStu;

    8

  • 2. 7

    8

  • 8.2DataSource ///

    8

  • 8.2.1 1. AutoEdit/True / DataSetReadOnlyFalse2. DataSet DSwith DS do begin if (DataSet = DSet1) then DataSet := DSet2 else DataSet := DSet3;end;3. Enabled DataSource4. State State

    8

  • 8.2.2 1. EditEdit AutoEdit2. IsLinkedTo function IsLinkedTo(DataSet: TDataSet): Boolean; DataSet

    8

  • 8.2.3 1. OnDataChange / NextPrior OnDataChange2. OnUpdateData post 3. OnStateChange

    8

  • 8.3 DataSet DataSetQueryTableStoreProcADOTableADOQueryADOStoreProcDataSet DelphiDataSetTableQueryStoreProc DataSet

    8

  • 8.3.1 ActiveTrueActive:=TrueopenActiveFalseclose

    8

  • 8.3.2

    8

  • 8.3.3 DBEditDBLabelDBMemo/DBGrid

    DataSetBOFEOF BOFEOF

    8

  • 8.3.3BOFTruellFirstlPriorEOFTruel l Lastl Next

    8

  • 8.3.4

    with MyDataSet do begin Append; FieldValues[Field1_Name1]:= Field1_NewValue; FieldValues[Field2_Name2]:= Field2_NewValue; Post; end;

    CanModifyCanModifyTrueTableReadOnlyFalse

    8

  • 8.3.5

    8

  • 8.3.5 1. Before+ BeforePostTDBEdit // BeforePostprocedure TForm1.MyDataSetBeforePost(DataSet: TDataSet);beginif DBEdit1.Text = '' then Abort;end;

    8

  • 8.3.52. After+ firstlastnextpriormoveby DBNavigator BeforeScrollAfterScroll AfterScroll // AfterScroll procedure TForm1. MyDataSetAfterScroll(DataSet: TDataSet); begin StatusBar1.panels[0].Text:='Record'+IntToStr(DataSet.RecNo) +Of'+IntToStr(DataSet.RecordCount); end;

    8

  • 8.3.53. On+ OnClick OnCalcFields

    8

  • 8.3.6 TFieldl l l l l OnCalcFields

    8

  • 8.3.61. QueryTableStoredProcADOTableADOQueryADOStoredProc TDataSet 1Fields[i]Fields[i] Table1.Fields[0].DisplayLabel:=2FieldByName studentsNameDataSet1.FieldByName(Name).AsString:= Edit1.text; Edit1.text:= DataSet1.FieldByName(Name).AsString;

    8

  • 8.3.62. 1 Tfield studentsname DBGridl.FieldByName(Name).DisplayLabeL:= ;DBGridl.FieldByName(Name).DisplayWidth:=8; TField

    8

  • 8.3.62

    8

  • 8.3.63.

    8

  • 8.3.64.

    8

  • 8.3.65. TField TField

    8

  • 8.3.6 1TableDatabaseName studentTableNamestudentsNameTabStu Activetrue2TabStu Fields Editor Table

    8

  • 8.3.63Add all fields

    8

  • 8.3.6 4TForm1 TForm1 = class(TForm) TabStu: TTable; TabStuStudentid: TStringField; TabStuName: TStringField; TabStuSex: TBooleanField; TabStuBirthday: TDateField; TabStuDepartmentid: TSmallintField; TabStuTotalscore: TFloatField; TabStuName.DisplayLabel:='';TabStuName.DisplayWidth:=8;Edit1.Text:= TabStuName.Value; TabStuName.Value:= Edit1.Text;

    8

  • 8.3.66. DelphiTFieldTField

    8

  • 8.3.6

    8

  • 8.3.6

    MyDataSet.Field[i]2 s:=MyDataSet.Field[i].AsString; // i: =MyDataSet.Field[i].AsInteger; //

    8

  • 1

    8

  • 8

  • 8

  • 2// OnCreate,(1)procedure TFormObs.FormCreate(Sender: TObject);begin with TabStu do begin // TabStuStudentidDisplayLabelTabStuStudentid.DisplayLabel:=''; TabStuName.DisplayLabel:=''; TabStuSex.DisplayLabel:=''; TabStuBirthday.DisplayLabel:=''; TabStuDepartmentid.DisplayLabel:=''; TabStuTotalscore.DisplayLabel:=''; end;end;

    8

  • // TabStuSexOnGetText(2)procedure TFormObs.TabStuSexGetText(Sender: TField; var Text: String; DisplayText: Boolean);// Senderbegin if Sender.Value then Text:='' // Sextrue else Text:=''; // Sextrueend;// TabStuSexOnSetText// procedure TFormObs.TabStuSexSetText(Sender: TField; const Text: String);begin if Text='' then Sender.Value:=true else Sender.Value:=false;end;

    8

  • // GrdStuOnDblClick// NameTotalscoreprocedure TFormObs.GrdStuDblClick(Sender: TObject);begin TabStu.DisableControls; try TabStu.First; // while not TabStu.Eof do// begin // // EdtName.Text:= TabStuName.Value; EdtTotal.Text:= TabStuTotalscore.AsString; TabStu.Next; // end; finally TabStu.EnableControls;end;end;

    8

  • // DSStuOnDataChangeprocedure TFormObs.DSStuDataChange(Sender: TObject; Field: TField);varcurStatus:string; // curStatusbegin EdtName.Text:= TabStuName.Value; EdtTotal.Text:= TabStuTotalscore.AsString;end;// DSStuOnStateChange(3)procedure TFormObs.DSStuStateChange(Sender: TObject);begin case TabStu.State of dsBrowse: curStatus:=''; dsEdit: curStatus:=''; dsInsert: curStatus:=''; else curStatus:=''; end; SBarObs.Panels[0].Text:=curStatus; // curStatusend;

    8

  • // OnClickprocedure TFormObs.BtnOnOffClick(Sender: TObject);begin TabStu.Close; // TabStuBeforeClose TabStu.Open;end;// BeforeCloseprocedure TFormObs.TabStuBeforeClose(DataSet: TDataSet);begin if (TabStu.State in [dsEdit, dsInsert]) thencase MessageDlg('?', mtConfirmation, mbYesNoCancel, 0) of mrYes: TabStu.Post; // mrNo: TabStu.Cancel; // mrCancel: Abort; // end;end;

    8

  • 4 NagStu

    8

  • 8.3.7BDEADO BDE BDE32BDEBDEAPIBDEDelphi1BDE BDE

    8

  • 8.3.7BDEADO2BDE 1BDEdBASEParadoxASCIIFoxPro Access 2SQL LinksDelphi SQLOracleSybase MicrosoftInfomixInterBaseDB2

    3ODBC BDE

    8

  • 8.3.7BDEADO3BDE Administrator WindowsBorland Delph 7 BDE AdministratorBDE Administrator BDE Administrator

    8

  • 8.3.7BDEADOBDE Administrator: 1 2

    8

  • 8.4 BDE BDETableQueryStoredProcQueryUpdateSQLDatabaseSessionBatchMoveNestedTableBDEClientDataSetClientDataSetBDE Query DatabaseBatchMove NestedTable TableDatabaseSession UpdateSQL

    8

  • 8.4.1 Table Table 1DatabaseName DatabaseName BDEBDE 2TableName TableName3TableType TableType ttDefault

    8

  • 8.4.1 Table 4Active Active Active 2. Table 1 FieldDefsFieldDefsFieldDefsTFieldDefsAddFieldDefTFieldDefsFieldDefs 2CreateTableDeleteTableCreateTableDatabaseNameTableNameTableTypeFieldDefsDeleteTable

    8

  • 8.4.1 TableDparadoxDBstudents.db, studentid, 6totalscoreuses dbtables,db; var TabStu:TTable;{CreateSjTable}procedure CreateSjTable;begin TabStu:=TTable.Create(Form1); TabStu.close; with TabStu do begin Active := False; // DstkglDatabaseName := 'd:\paradoxDB'; TableName := 'students.db'; // students

    8

  • 8.4.1 Table// studentsstudentidtotalscorewith FieldDefs do begin Clear; // studentid(6)with AddFieldDef do begin Name := 'studentid'; DataType := ftString; Size := 6;Required := True; end; // totalscorewith AddFieldDef do begin Name := 'totalscore'; DataType := ftInteger; end; end; end; TabStu.CreateTable; // TableCreateTable TabStu.Free; // TabStuend;

    8

  • 8.4.1 Table3. Table TdataSet8.3.3 students 8.3.6 (1) Panel10 SpeedButtonCaption(2)

    8

  • 8.4.1 Table(3) procedure TForm1.SpeedButton1Click(Sender: Object);begin TabStu.First;end;PriorNextLastDeleteEditPostCancelRefresh

    8

  • 8.4.1 Table4. 1SetKey/GotoKey SetKeyGotoKey 1SetKeyTable 2 3TableGotoKey GotoKeyTrue GotoKey False

    8

  • 8.4.1 Table SetKey/GotoKeystudentsPanTotal (1)

    8

  • 8.4.1 Table(2) procedure TFormFind.BtnFindClick(Sender: TObject); // BtnFindOnClickbegin with TabStu do begin IndexFieldNames:='Name'; // // SetKey/GotoKeySetkey;//FieldByName('Name').Value:=EdtName.Text; // FieldByNameif GotoKey then // GotoKeyBoolean begin {} panTotal.Caption:= ''+FieldByName('totalscore').AsString; ShowMessage(''); end else begin panTotal.Caption:= ''; ShowMessage(''); end; end;end;

    8

  • 8.4.1 Table(3) SQLParadox l Database Desktop ToolsUtilitiesRestructureSelect file

    Select file

    8

  • 8.4.1 Tablel Aliasstudent studentstudents.db Restructure Paradox 7 Table:student.db

    Restructure

    8

  • 8.4.1 TablelTable PropertiesSecondary IndexesDefineDefine Secondary IndexFields NameIndexed Fields NameOK Define Secondary Index

    8

  • 8.4.1 TablelSave Index As Index NameByNameOK Restructure Paradox 7 Table:students.db SaveDatabase DesktopName Save Index As

    8

  • 8.4.1 Table2FindKey FindKey FindKey(const KeyValues: array of const): Boolean; Table1.FindKey([990203,]) 990203

    8

  • 8.4.1 Table3GotoNearest/FindNearest GotoNearestFindNearest GotoNearestFindNearest procedure Nearest1;begin with TabStu do begin IndexFieldNames:='Name'; Setkey; FieldByName('Name').Value:= edtName.Text; GotoNearest; end;end; beginendIndexFieldNames:='Name';FindNearest([edtName.Text]);FindNearest

    8

  • 8.4.1 Table4 Table: DataSet SetRangeStart SetRangeEnd ApplyRange CancelRange

    8

  • 8.4.1 TableNameGrdStu CancelRange procedure SetRange; // begin with TabStu do begin IndexFieldNames:='Name'; // // 2Edit1.textName SetRangeStart; FieldByname('Name').AsString:= Edit1.text; // // 2Edit2.textNameSetRangeEnd; FieldByname('Name').AsString:= Edit2.text; ApplyRange; end;end;

    8

  • 8.4.1 Table5. 1 AddIndex Procedure AddIndex(const Name, Fields: String; Options: TIndexOptions, const DescFields:String=''); DeleteIndex procedure DeleteIndex(const Name: String);

    8

  • 8.4.1 Table2 IndexDefs3 IndexNameIndexFieldNames IndexName IndexFiledNames dBASEParadox SQL Orderby

    8

  • 8.4.1 Table6. / /student studentsgrades/ studentid

    8

  • 8.4.1 Table 1Database FormWizard Next

    8

  • 8.4.1 Table 2 Driver Or Alias Name e:DirectoriesTable Name students.db Next

    8

  • 8.4.1 Table 3 Birthday Next

    8

  • 8.4.1 Table 4 3HorizontallyVertically In a grid Next

    8

  • 8.4.1 Table 5grades.db2

    8

  • 8.4.1 Table 634 gradesNext Next

    8

  • 8.4.1 Table 7// Detail FieldsstudentidMaster Fieldsstudentid Next

    8

  • 8.4.1 Table 8 Generate a main form Form Only Form and Data Module

    8

  • 8.4.1 Table9Table1Table2ActivetrueFormWizard students/grades

    8

  • 8.4.1 Tablestudents/grades 1TsbStuTabGrad DSStuDSGradTabGrad MasterSource2TabGradMasterFields FieldLinkDesigner (MasterField

    8

  • 8.4.1 Table

    8

  • 8.4.1 Table7. 1 23Lookup

    8

  • 8.4.1 TableCoursesStudents department1

    8

  • 8.4.1 Table(2) l TabCour l TabCourNewField NewFieldName JxsTypeSmallintFieldType CalculatedOK

    8

  • 8.4.1 Table l TabCourOnCalcFieldsprocedure TForm1.TabCourCalcFields(DataSet: TDataSet);beginTabCourJxs.Value:=TabCourHours.ValuedivTabCourScore.Value;end; 3 l TabStu l TabStuNew Field LookupField propertiesNameDep TypeStringFieldTypeLookupLookup definitionDatasetTabCodeKey Fields DepartmentidLookup KeysDepartmentidResult Field DepartmentOK

    8

  • 8.4.1 Table Dep

    4Jxs

    8

  • 8.4.2 Query Query 1SQL SQLQuerySQLQuery 1QueryClose2Query.SQLClearSQL3SQLAddSQL4QueryOpenExecSQLSQLQueryl.CloseQueryl.SQL.Clear // SQLSQLQueryl.SQL.Add('select * from customer') // SQLQuery1.OpenQueryl.ExecSQL // SQL

    8

  • 8.4.2 Query2Active QueryActiveTrueSQL ExecSQLSQLQuery SQLOpenSQL3RequestLive RequestLiveQuery False

    8

  • 8.4.2 Query TrueBDESQLl Joinl SelectDISTINCTl ORDER BYl GROUP BYSUMAVGl WHERE >=
  • 8.4.2 Query4PrepareUnPrepare PrepareQueryBDE SQL Query UnPreparePrepare 5OpenExecSQL QueryOpenExecSQLSQLOpenSQL

    8

  • 8.4.2 Query2. QuerySQLSQLSQLselect * from employee where LastName=:LAST; 1: SQLQueryParams2: SQLParamByName

    8

  • 8.4.3 StoredProc StoredProc (1) DatabaseNameStoredProc (2)StoredProcName (3) lll / l

    8

  • 8.4.3 StoredProc2. StoredProc(1) Params (2) ParamBindModeParamBindModeParams pbByName pbByNumber (3) PrepareQueryPrepare

    8

  • 8.4.3 StoredProc(4) ExecProc ExecProc ParamByName StoreProcEMPLOYEEDEPT_BUDGET StoredProc1.ParamByName('DNO').AsString:=edit1.Text;StoredProc1.ExecProc;edit1.Text:=StoredProc1.ParamByName('TOT').AsString; //'TOT'

    8

  • 8.4.4 DataBase Database/DatabaseDatabase

    8

  • 8.4.4 DataBaseTDatabaseBDEonLoginC/SC/SDatabaseDatabaseName Connected KeepConnection DataSets DataSetCount CloseDataSets Open Close

    8

  • 8.4.4 DataBase2. DatabaseDatabaseDatabase EditorDatabase NameDriver Name

    8

  • 8.4.4 DataBase3. 1Begin Transaction 2Commit Transaction 3Rollback Transaction

    8

  • 8.4.4 DataBase//ApplyButtonOnClickprocedure Tforml.ApplyButtonClick(SenderTObject)begin with CustomerQuery do // CustomerQuery begin Databasel.StartTransactiontry ApplyUpdates // Database1.Commit except Database1.Rollback // raise end CommitUpdates // end

    8

  • 8.4.4 DataBase4. DatabaseLoginPromptLoginPrompt Params OnLogin

    8

  • 8.4.4 DataBase1ParamsLoginPromptFalseLocalInterbaseUSERNAME=SYSDBAPASSWORD=masterkey2OnLoginLoginPromptTrueOnLoginLoginParams.values['USERNAME']:='SYSDBA'LoginParams.values['PASSWORD']:='masterkey'

    8

  • 8.4.5 UpDateSQL UpDateSQL UpdateSQL

    8

  • 8.4.5 UpDateSQL2. UpdateSQLUpdateSQL1UpdateSQL2UpdateSQLInsertSQLDeleteSQLModifySQLDeleteSQLdelete from "students.db" where Studentid = :OLD_StudentidModifySQLupdate "students.db"set Departmentid = :Departmentid, Totalscore = :Totalscorewhere Studentid = :OLD_Studentid

    8

  • 8.4.5 UpDateSQLUpdateSQLSQLUpdateSQLSQL SQL1UpdateSQL2UpdateObjectUpSQL3UpSQLUpdateSQL

    8

  • 8.4.5 UpDateSQLSQL 1 2 3 4SQL Key FieldsUpdate Fields UpdateSQL

    8

  • 8.4.5 UpDateSQL4 TDatabaseApplyUpdatesApplyUpdate

    8

  • QueryStoreProcDatabaseUpdateSQL1. (1) SQLstudent`SQLSQL QueryQuerySQLstudent(2) EMPLOYEEDEPT_BUDGETDEPDEPT_BUDGETDNOTOTBudgetOnClick

    8

  • QueryStoreProcDatabaseUpdateSQL (3) QueryQrystudentsGrdStuStudentsUpdateSQLStudentStudents GrdStu

    8

  • QueryStoreProcDatabaseUpdateSQL2.

    8

  • QueryStoreProcDatabaseUpdateSQL

    8

  • QueryStoreProcDatabaseUpdateSQL

    8

  • QueryStoreProcDatabaseUpdateSQL 3. // RBSPOnCreateprocedure TFormSQLSP.RBSPClick(Sender: TObject);var InpDNO: string;begin InpDNO:= InputBox('DEPT_BUDGET', '', '-1'); SPBUDGET.ParamByName('DNO').Value:=InpDNO;// DNO SPBUDGET.ExecProc; // // ParamByName'TOT'MessageDlg(InpDNO+':'+SPBUDGET.ParamByName('TOT').AsString, mtInformation,[mbOk], 0); RBSP.Checked:=false;end;

    8

  • QueryStoreProcDatabaseUpdateSQL {MemInpSQLOnDblClickSQL}procedure TFormSQLSP.MemInpSQLDblClick(Sender: TObject);begin MemInpSQL.Clear; MemInpSQL.SetFocus;end;// RBExeSQLOnClickSQLprocedure TFormSQLSP.RBExeSQLClick(Sender: TObject);begin DSStu.DataSet:=QryStu; QryStu.Close; QryStu.SQL.Clear; {MemInpSQLSQLQryStuSQL} QryStu.SQL.Add(MemInpSQL.text); QryStu.Open; RBExeSQL.Checked:=false;end;

    8

  • QueryStoreProcDatabaseUpdateSQL // DatabaseApplyUpdatesprocedure TFormSQLSP.RBBufClick(Sender: TObject);begin MemInpSQL.Lines.Clear; MemInpSQL.Lines.Add('select * from students'); DSStu.DataSet:=QryStudents; QryStudents.Open; QryStudents.Database.ApplyUpdates([QryStudents]); RBBuf.Checked:=false;end;// GrdStuOnDblClickprocedure TFormSQLSP.GrdStuDblClick(Sender: TObject);begin QryStudents.Close; QryStudents.Open;end;

    8

  • QueryStoreProcDatabaseUpdateSQL4. (1) SQL l MemInpSQLselect * from students GrdStustudents l Memo1select * from students where Name like % GrdStustudentsName

    8

  • QueryStoreProcDatabaseUpdateSQL(2) l DepartmentidTotalscoreNag Nag UpdateSQL lDepartmentidTotalscore GrdStu lDepartmentidTotalscore GrdStu Departmentid Totalscore

    8

  • 8.4.6BDE BatchMove BatchMoveSQLBatchMove1SourceDataSetTTable TQuery2DestinationTTable3ModebatCopy 4Execute

    8

  • 8.4.6BDETbuttonOnClickprocedure TForm1.Button1Click(Sender: TObject);begin {}if SaveDialog1.Execute then begin Table1.TableName := SaveDialog1.FileName; with BatchMove1 do begin//BatchMove4Source := Query1; Destination := Table1; Mode := batCopy; Execute; end; end;end;

    8

  • 8.4.6BDE2. Session SessionBDE Database SessionDatabase BDEParadox ParadoxdBASE3. NestedTable NestedTableNestedTable BDEDataSetBDEBDE

    8

  • 8.5 ADO ADOOLE DBOLE DBADOBorlandBDE/DBGridDBEditADO ADOADO ADOCommand ADOTable ADOStoredPro RDSConnectionADOConnection ADODataSet ADOQuery

    8

  • 8.5 ADOADOBDE

    8

  • 8.5.1 ADOConnection 1. ConnectionStringADOConnectionConnectionStringConnectionStringADO1ConnectionString :Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\paradoxDB;Extended Properties=paradox 7.X; Persist Security Info=False

    8

  • 8.5.1 ADOConnection2 1ADOConnection ConnectionString Use Connection StringOK ConnectionString

    8

  • 8.5.1 ADOConnection2 Datalink properties Provider Paradox Microsoft Jet 4.0 OLE DB Provider Datalink properties

    8

  • 8.5.1 ADOConnection3AllExtendedproperties Property ValueParadox 7.XOK Extended properties Extended Properties

    8

  • 8.5.1 ADOConnection4ConnectionSelect orenter a database name:Paradox d:\paradoxDBstudent 4User nameAdmin ParadoxBrowse

    8

  • 8.5.1 ADOConnection5Test Connection OK ConnectionString Paradox

    8

  • 8.5.1 ADOConnection2. ADOConnectionBeginTransCommitTransRollBackTransOnBeginTransCompleteOnCommitTransCompleteOnRollbackTransCompleteDatabase

    8

  • 8.5.1 ADOConnectionADO/1ADOTableADOQueryData SourceDBGrid

    8

  • 8.5.1 ADOConnection

    8

  • 8.5.1 ADOConnection2/ADOADOTabGradMasterSourceDSStuMasterFieldsField Link DesignerDetail FieldsMaster FieldsStudentidAddJoined FieldsStudentid> StudentidDeleteClearOK Field LinkDesigner

    8

  • 8.5.1 ADOConnection3RUN

    8

  • 8.5.2 ADOCommand ADOCommand ADOCommandSQLDDL DMLInsertDeleteUpdateSelect DDL

    8

  • 8.5.2 ADOCommandADOCommand CommandText CommandTextSOLADOCommandPreparedtrueADOCommandExecuteOpenADOCommand(2) CommandType CommandTypeCommandText

    8

  • 8.5.2 ADOCommand(3) CommandTimeout CommandTimeout 30(4) Prepared Prepared 2. ADOCommand (1) Execute ExecuteADOCommand CommandTextSQL

    8

  • 8.5.2 ADOCommand ADOCommandcodes4ADOCommandADOConnectionADOCommand Button8.5.2ADOConnection ConnectionStringstudentButton1 OnClick procedure TForm1.Button1Click(Sender: TObject); begin with ADOCommand1 do begin CommandText:=' INSERT INTO codes '+ ' VALUES (:NewDepartmentid,:NewDepartment,:NewDescription)'; CommandType:=cmdText; Parameters.ParamByName('NewDepartmentid').Value:= 4; Parameters.ParamByName('NewDepartment').Value:= ''; Parameters.ParamByName('NewDescription').Value:='ADOCommand'; Execute; end; end;

    8

  • 8.5.3 ADODataSet ADODataSetADOADOSQLADODataSetADODataSetConnectionStringConnectionADOConnectonnection

    8

  • 8.5.3 ADODataSetADODataset 1CursorType CursorType ADO ADODatasetCursorType 2Connection ConnectionADODataset ADOConnection

    8

  • 8.5.3 ADODataSet2. ADODataset1CancelUpdatesUpdate2UpdateBatchADODatasetUpdateBatch 3CloneCloneADODatasetADODataset

    8

  • 8.5.3 ADODataSet4DeleteRecordsDeleteRecordstype TAffectRecords = (arCurrent, arFiltered, arAll, arAllChapters);procedure DeleteRecords(AffectRecords: TAffectRecords = arAll);AffectRecordsDelete:

    RollbackTrans CancelBatch

    8

  • 8.5.3 ADODataSet5Requery Requery ADODataset 6LoadFromFileSaveToFile ADO LoadFromFileSaveToFileADTG XML

    8

  • 8.5.3 ADODataSet: LoadFromFile(const FileName: WideString);SaveToFile: procedure SaveToFile(const FileName: String = ''; Format: TPersistFormat = pfADTG);l FileNamel FormatpfADTGAdvanced Data TablegrampfXMLXML

    8

  • 8.5.3 ADODataSet1studentstudentsstudentd:\students.xml2

    8

  • 8.5.3 ADODataSet

    8

  • 8.5.3 ADODataSet3 const FileName = 'd:\students.XML';

    LoadData(d:\students.XML)procedure TFormBriefcase.LoadData;begin if FileExists(FileName) then Studs.LoadFromFile(FileName)// else begin // ""// ConnectionInd.Checked := True; Studs.Open; end;end;

    8

  • 8.5.3 ADODataSetUpdateDatal l lprocedure TFormBriefcase.UpdateData;begin ConnectionInd.Checked := True; Studs.UpdateBatch;DeleteFile(FileName);end;SaveDataprocedure TFormBriefcase.SaveData;begin Studs.SaveToFile(FileName, pfXML);end;

    8

  • 8.5.3 ADODataSetFormCreateLoadDataemployee.xmlprocedure TFormBriefcase.FormCreate(Sender: TObject);begin oadData;end;

    FormCloseQuery

    8

  • 8.5.3 ADODataSetprocedure TFormBriefcase.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin if ConnectionInd.Checked then begin ADOConStu.Open; Studs.Connection := ADOConStu; UpdateData; end else begin Studs.Connection := nil; ADOConStu.Close; SaveData; end;end;end.

    8

  • 8.5.3 ADODataSet(4) l l (d:\students.xml) l l

    8

  • 8.5.4 ADOTableADOQueryADOStoredProc ADOTableTableADOQueryQueryADOStoredProcStoredProc ADOTableTable (1) ADOTableADOTable BDE(2) ADOTableTable ADO ConnectionCommandText CommandTimeoutCommandTypeConnectionString

    8

  • 8.5.5 :

    8

  • 8.6 ODBC8.6.1 ODBC ODBCMicrosoftODBCSQLODBC/RDBMSISAMJetFoxPro32ODBCWindows.DLLODBC APIODBC

    8

  • 8.6.1 ODBC ODBCDSN SQLODBC ODBCODBCODBCODBCANSI SQLANSI SQLMicrosoftODBCdbaseFoxProVisualFoxProParadoxExcelODBC/RDBMSANSI SQL

    8

  • 8.6.2 ODBC ODBCe:\exceltest\student.xls (1) ODBCWindows ODBC ODBC

    8

  • 8.6.2 ODBC(2) ODBCAdd Microsoft Excel Driver *.xlsexcel ODBC Microsoft Excel ODBC Microsoft Excel

    8

  • 8.6.2 ODBCexStu

    8

  • 8.6.2 ODBC3ODBCexStu

    8

  • 8.6.3 BDEODBC BDEODBCexStu 1BDE AdministratorConfigurationConfigurationDriversODBCNew ODBC

    8

  • 8.6.3 BDEODBC2New ODBC DriverODBC Driver NameMicrosoft Excel Driver*.xlsSelect Data Sources to Create A1iasesexStuDriver NameexStuODBCOKBDE AdministratorConfigurationDriversODBCexStuODBC New ODBC Driver

    8

  • 8.6.3 BDEODBC3BDE AdministratorDatabaseObjectNewNew Database AliasexStuODBCOK New Database Alias

    8

  • 8.6.3 BDEODBC4BDE AdministratorODBClReNameODBClexcelStu5excelStuODBC DSNODBC DSNexStu6ObjectApplyOKODBCexcelStuBDE

    8

  • 8.6.3 BDEODBC8.15e:\exceltest\student.xlsexcelStu

    8

  • 8.6.3 BDEODBC

    8

  • 8.6.3 BDEODBCl TabStuTableNameStudents$ Students$l GrdStustudentsname 255Size l IDEExcel ISAM XLS IDEWindows Explorer l ISAM

    8

  • 8.7 / Data Controls/ DBNavigator DBEdit DBImage DBRadioGroup DBGrid DBText DBListBox DBCheckBox DBComboBox DBMemo

    8

  • 8.7.1 DBGrid

    1. DBGrid DBGrid

    8

  • 8.7.1 DBGridOptions Options

    8

  • 8.7.1 DBGrid DBGridGrdStustudentidnametotalscorestudentidnametotalscore

    8

  • 8.7.1 DBGrid(1) GrdStu Columns Editor Add all fields

    8

  • 8.7.1 DBGrid(2) l SexBirthdayDepartmentidSexDeletel GrdStustudentidnametotalscorestudentid Title+Caption

    8

  • 8.7.1 DBGrid2. DBGrid DBGrid

    8

  • 8.7.2 DBNavigatorDBNavigatorDBNavigator DBNavigator DBNavigator DBNavigator

    8

  • 8.7.2 DBNavigatorDataSource VisibleButtons HintsDBNavigatorHints Hints

    8

  • 8.7.2 DBNavigator4ShowHintTrue 5VisibleDBNavigatorDBNavigator

    8

  • 8.7.3DataControl 1. DBTextStandardLabelDBTextDETextWordWrapTrueDBTextDBTextstudentsstudentidnametotalscore DBText Label DBText

    8

  • 8.7.3DataControl2. DBEditDBTextDBEdit DBEdit

    8

  • 8.7.3DataControl3. DBMemoDBGridGraphMemoDBMemoDBImageDBMemoDBMemocodesdescription TDBMemo

    8

  • 8.7.3DataControl4. DBImageDBImageGraph DBImageBMP DBImage

    8

  • 8.7.3DataControl5. DBListBOX( DBListBoxDataField)1Items DBListBoxDataSource DataField Items Items

    8

  • 8.7.3DataControl6. DBComboBoxSortedDBComboBox7. DBCheckBOXDBCheckBox

    8

  • 8.7.3DataControl8. DBRadioGroup()ItemsDBRadioGroupItemsDBRadioGroup

    8

  • 8.8 8.8.1Database DesktopQBE QBE(Query By Example)SQLQBE

    8

  • 8.8.1Database DesktopQBE Database DesktopQBESQLstudentstudentsstudentidnametotalscorecodesdepartment(1) Database Desktop Borland Delphi7Database Desktop(2) FileNewQBE Query(3) Select File Aliasstudent students

    8

  • 8.8.1Database DesktopQBE(4) Query studentidnametotalscore (5) Departmentid 990200990300 Departmentid >=990200
  • 8.8.1Database DesktopQBE(6) codes Select Filecodes.db 4codesDepartment(7) studentscodescustomer ordersDepartmentid l l studentsDepartmentid jionl l codesDepartmentid jionl

    8

  • 8.8.1Database DesktopQBE(8)

    8

  • 8.8.1Database DesktopQBE(9) SQL SQLDatabase Desktop SQL

    (10) QBEFileSave Aliasstudent StuQBE

    8

  • 8.8.2SQLSQL Builder SQL BuilderQueryQuerySQLDatabase DesktopSQL BuilderSQLQuerySQL BuilderSQL BuilderSQL BuilderYesSQL BuilderSQLQuery SQL SQL

    8

  • 8.8.2SQLSQL Builder / studentstudentscodesSQLBuilder(1) SQL BuilderDatabase student(2) TablestudentscustomerSQL BuildercodescodesSQL BuilderSQL Builder

    8

  • 8.8.2SQLSQL Builder

    codesSQL BuildercustomerRemove Table

    8

  • 8.8.2SQLSQL Builder2. SQLstudentsstudentid nametotalscore3. SQL BuilderSorting studentsstudentid(1) students(2) SortingOutput Fields Students. studentidAdd Students. studentidSorted By(3) Sorted ByStudents. studentid Students. studentid AscendingDescending

    8

  • 8.8.2SQLSQL Builder

    8

  • 8.8.2SQLSQL Builder4. CriteriaWHERESQL students studentsstudentid990200990300 CriteriaCriteria (1) Criteria1Field or Value student.studentidCompare >= 2Field or Value990200 (2) SQL Builder student.studentid
  • 8.8.2SQLSQL BuilderCriteria

    8

  • 8.8.2SQLSQL Builder5. Selection courses jsxjxs=hours/score Selection (1) courses, Selection (2) 2FieldHours/Score 1Output NameHours/Scorejxs

    8

  • 8.8.2SQLSQL Builder

    8

  • 8.8.2SQLSQL Builder6. Groupingstudents Departmentid 1students, Grouping2Output FilesStudents.Departmentid Students.DepartmentidGrouped On 3Output FilesGroupedOn

    8

  • 8.8.2SQLSQL Builder

    8

  • 8.8.2SQLSQL Builder7. SQL BuilderJoins studentscodes DepartmentidJoins1studentscodesJoins 2Operator=Field students. Departmentidcodes. Departmentid 3studentsstudentidnametotalscore codesdepartment studentsDepartmentidcodesDepartmentidstudentscodesDepartmentid

    8

  • 8.8.2SQLSQL Builder

    8

  • 8.8.3 dbExpress BorlandLinuxKylixWindowsDelphi 6

    8

  • 8.8.3 dbExpressdbExrpessdbExrpessdbExpressdbExrpessSQLSQL dbExrpess SQLDataSet SQLStoredProc SQLMonitor SQLConnection SQLQuery SQLTable SimpleDataSet

    8

  • 8.8.3 dbExpress2. dbExrpess dbExrpess dbExrpess 1 2ClientDataSet 3. dbExpress dbExpress

    8

  • 8.8.3 dbExpressdbExpress

    8

  • 8.8.3 dbExpressdbExpressdbExpressinterBaseEmployee1

    8

  • 8.8.3 dbExpress

    8

  • 8.8.3 dbExpress2SQLConnection 1SQLCon Driver Name Interbase Connection NamedbExIBase Database

    8

  • 8.8.3 dbExpress2InterBasedbExIBaseDatabasec:\program files\common files\borland shared\data\Employee.gdb3// GrdIntBaseDblClickprocedure TFormdbExpress.GrdIntBaseDblClick(Sender: TObject);begin CDSIntBase.ApplyUpdates(0);end;

    8

  • 8.8.4 InterBase Express InterBase Express(IBX)InterBaseIBXInter BaseBDE

    8