1. 程式人生 > >delphi 資料庫的動態建立

delphi 資料庫的動態建立

定義標準資料庫:

      定義資料庫時,資料庫檔案資訊和資料庫結構資訊是必需的,如資料庫檔案的完整路徑,資料庫型別,資料庫的欄位名、型別、長度等。在delphi程式中可以定義三種標準型別的資料庫,DBASE資料庫、Paradox資料庫、ASCII資料庫。

使用:TTable 建立。

procedure CreateDB();

    var table1:TTable;

begin

    table1:=ttable.create(self);

    with table1 do

    begin

        active:=false;

        //DatabaseName:="c:/dbtemp";{預定義的別名資料庫工作區名}

        tablename:='ljh1.db'; {將定義的資料庫名}

        tabletype:=ttparadox; {資料庫型別,可為ttParadox,ttASCII,ttDbase}

        {tabletype屬性為ttDefault表示資料庫型別與TableName指定值的副檔名對應}

        with fielddefs do {資料庫結構資訊:此方法為ljh.db增加欄位}

        {呼叫TTable.FidldDefs物件的Add方法向資料庫表中新增欄位。Add有4個引數:

    欄位名:string。

    欄位型別:TfieldType。

    欄位大小:Word。一般只對String和Memo型別使用。

    欄位是否NotNull: Boolean。

         }

        begin

            clear;

            add('yj',ftdate,0,false);

            add('zp', ftstring,10,false); {增加具體的欄位名、型別}

            add('zdm',ftinteger,0,false);

        end;

        With indexdefs do {此方法為ljh.db增加索引欄位}

        {使用TTable.IndexDefs.Add()方法定義索引。Add有三個引數:

    索引名:string;

    索引欄位名:string;

    索引型別:TIndexOptions;

        }

        Begin

            Clear;

            Add('yjindex','yj',[ixprimary]);

        end;

        createtable;

    end;

end;

使用SQL語句建立:

procedure SQLCreateDb();

   var table2:tquery;

begin

    table2:=tquery.create(self);

    with table2 do

    begin

        with sql do

        begin

            clear;

            add('create table "ljh2.db"');

            add('(yj date,'); {注意引號中的(}

            add('zp char(10),');

            add('zdm int)'); {注意引號中的)}

        end;

        execsql;

        sql.clear;

        sql.add('create index yj on "ljh.db" (yj)');{此sql語句為ljh.db增加索引欄位}

        execsql;

    end;

end;

會在當前目錄下生成以DB結尾的資料庫檔案。

以上是Delphi建立記憶體表步驟。

kbmMemTable使用簡述:

      kbmMemTable建立步驟:

1. 建立一個kbmMemTable物件例項。

2. 呼叫kbmMemTable.FidldDefs物件的Add方法向資料庫表中新增欄位。Add的方法和Delphi相同。

3. 使用kbmMemTable.IndexDefs.Add()方法定義索引。Add的方法和Delphi相同。

4. 呼叫kbmMemTable的CreateTable。

重要的區別:因為kbmMemTable不需要BDE的支援。所以不要指明DatabaseName, TableName和TableType三個屬性。

程式碼如下:

with kbmMemTable1 do

begin

    with kbmMemTable1.FieldDefs do

    begin

        Clear;

        Add('Period', ftInteger, 0, false);

        Add('VALUE', ftLargeInt, 0, false);

        Add('BytesField', ftBytes, 20, false);

        Add('Color', ftInteger, 0, false);

        Add('Date', ftDate, 0, false);

        Add('Memo', ftMemo, 0, false);

        Add('AutoInc', ftAutoInc, 0, false);

    end;

    with kbmMemTable1.IndexDefs do

    begin

        Clear;

        Add('Index1', 'VALUE', []);

    end;

    CreateTable;

end;

與Delphi建立記憶體表的對比

主從表功能:

     kbmMemTable可以象其它TDataSet一樣,通過設定MasterSource和MasterField來簡單的完成主從表的操作。

SQL功能:

    沒有發現kbmMemTable可以支援SQL語句的操作。它提供按欄位排序和對排序欄位的查詢功能。

kbmMemTable特點:

從其它TDataSet得到資料。

程式碼如下:

LoadFromDataSet(Table1, [mtcpoStructure, mtcpoProperties]);

這樣kbmMemTable就完全得到來自一個DataSet物件中的全部資料.

儲存和載入記憶體表中資料的功能

Delphi的TTable不提供SaveToFile功能。

kbmMemTable提供儲存到檔案的功能,儲存的檔案有兩種格式:

Options: TkbmMemTable.SaveFlags;

1. 二進位制格式。kbmMemTable.SaveToBinaryFile('c:/test.bin', Options).

kbmMemTable1.LoadFromBinaryFile('c:/test.bin')

2. .csv格式。kbmMemTable.SaveToFile('c:/test.csv', Options);

kbmMemTable1.LoadFromFile('c:/test.csv')

(一種Excel支援的文件格式)開啟後的內容如下:

@@FILE [email protected]@ 200

@@TABLEDEF [email protected]@

Period=Integer,0,"Period","",10

VALUE=LargeInt,0,"VALUE","",15

BytesField=Bytes,20,"BytesField","",10

Color=Integer,0,"Color","",10

Date=Date,0,"Date","",10

Memo=Memo,0,"Memo","",10

AutoInc=AutoInc,0,"AutoInc","",10

CALC=String,20,"CALC","",20

@@TABLEDEF [email protected]@

Period VALUE BytesField Color Date Memo AutoInc CALC

1 198 0 02/11/2001 This is a memo%n2001-11-2 10:19:52 1 0 1-二月

2 196 3 03/11/2001 This is a memo%n2001-11-2 10:19:52 2 1 2-三月

在文件的頭部份描述了表的欄位結構,在下面則是資料區域。

相關推薦

delphi 資料庫動態建立

定義標準資料庫:       定義資料庫時,資料庫檔案資訊和資料庫結構資訊是必需的,如資料庫檔案的完整路徑,資料庫型別,資料庫的欄位名、型別、長度等。在delphi程式中可以定義三種標準型別的資料庫,DBASE資料庫、Paradox資料庫、ASCII資料庫。 使用:TTabl

基於NodeJS的MongoDB資料庫動態建立

MongoDB的Node驅動我選擇“mongodb",注意不要混淆,前者是MongoDB資料庫;後者是操作該資料庫的第三方開源的NodeJS的Package。需要另外安裝: npm install "mongodb" 言歸正傳: 通常我們都是對某一個已經存在的資料庫進行增、

delphi ado 動態連線資料庫

unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, DB, ADODB, ExtC

Delphi 動態建立控制元件,賦值,使用

 uses 中定義: type   TMyComponent = class(TComponent)   public     item1, item2, item3, item4, item5, item6: string;     constructor Crea

JQ操作動態建立的元素

給動態建立的元素新增事件: $(document).on('click','obj',function(){ }) 刪除動態建立的元素: $('#logisticsInfo').delegate('.delBtn','click',function(){ if(confi

在javascript中用for迴圈動態建立的input獲取其內容的方法

  問題: $("#v_m").click(function(){ var myselect=document.getElementById("v_m"); var index=myselect.selectedIndex ; var option = m

微服務分散式事務實戰(五)準備資料庫建立第一個微服務

1)資料庫準備 在資料庫中mysql 分別建立2個數據庫forum1和forum2 forum1 下建立表block forum2下建立表Theme sql程式碼如下: 1 資料庫1Forum1: CREATE DATABASE IF NOT EXISTS forum1; USE forum

jq動態建立表格

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> &l

C++ 用new 動態建立多維陣列

例:              int **array=new int*[n];       &nbs

【轉】postgresql 檢視資料庫叢集建立時間

原文連結:https://blog.csdn.net/ctypyb2002/article/details/80930809 使用 pg_controldata 檢視 Database system identifier $ /usr/pgsql-10/bin/pg_controldata

實驗一 初識DBMS及資料庫建立

實驗內容 1、建立資料庫 (1)建立一個學生課程資料庫,資料庫名Student_DB,包含主資料檔案,日誌檔案和輔助資料檔案Student_DB1,所有檔案路徑均存放在F:\My_database\ 下。其中,資料庫主資料檔案初始大小為5MB,最大大小為30MB,資料庫自動增長,增長方式是按

記一次logback傳輸日誌到logstash根據自定義設定動態建立ElasticSearch索引

轉:https://www.cnblogs.com/zhyg/p/6994314.html 先說背景,由於本人工作需要建立很多小應用程式,而且在微服務的大環境下,服務越來越多,然後就導致日誌四分五裂,到處都有,然後就有的elk,那麼問題來了 不能每個小應用都配置一個 logstash

右鍵選單,動態建立

case WM_RBUTTONDOWN://彈出右鍵選單         {         CMenu menu1;      &nb

MFC動態建立dialog,純程式碼建立dialog

參考:https://www.cnblogs.com/lidabo/p/3447007.html 大概思路:新增一個類,作為對話方塊模板 DlgTemplate.h #pragma once #include "afx.h" #define DLG_TEMPLATE_BUFFER_M

C# Panel滾動條滾動後,動態建立的控制元件下移的問題

C#做了一個從伺服器獲取資料的功能,動態建立控制元件顯示在Panel中,控制元件多的時候比Panel還高,滑動滾動條檢視中間資料,此時獲取到資料,,動態新增時,發現控制元件全部下移了,上面空出好大一部分空白。 除錯發現,即使控制元件的Location設定為new Point(0, 0);上面也空

元素的建立三種方式案例—動態建立列表

要點: 1.通過document.write()建立,如果是頁面載入完成再執行這種方式建立元素物件,會將原來頁面上的內容全部清除掉。如果在頁面載入的過程中,則不會出現這種狀況,但是也沒有什麼意義 2.通過.innerHTML會重新賦值,如果原來節點有內容會被層疊掉,為了建立有文字內容元素時候

delphi資料庫中ADOConnecting位置對查詢結果的影響

程式碼不附,只做記錄。 1、大部分資料庫的讀取部分會寫在窗體的onShow事件裡,此時資料庫的更新會在窗體的每次Show中進行資料的連線,也就是說,如果一個ADOConnection1對應兩個ADOQuery1和ADOQuery2,當通過ADOQuery1操作資料庫後,與ADOQuery2

案例動態建立表格

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input

案例動態建立星星

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body bgcolor="#000

HTML中關於動態建立的標籤無法繫結js事件的解決方法

小夥伴們在前端頁面的時候,是不是會經常遇到用JavaScript動態創建出來的Button按鈕或其他標籤無法使用點選事件的問題。如下程式碼,使用jquery在body中動態建立一個class為demo的Button按鈕,當點選這個按鈕時無法觸發點選事件。 <script> $(fun