成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

包含nosqldelphi的詞條

delphi數(shù)據(jù)庫開發(fā),動態(tài)sql,

var

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的伊犁網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

tmpSql: string;

begin

tmpSql := 'select odrbno,delno,pdctno,units,qtyu,delchar,indate From ppcchxxb ' +

' where (delno like ''T%'' or qtyu0) and indate=''2010-10-01''' +

' and indate=''2010-11-02'' and pdctno like ''%jm1%''';

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.Sql.Add(tmpSql)

ADOQuery1.Open;

end;

如果你里邊的條件是動態(tài)的話,比如時間,則只需將里邊的日期換成你選擇的比如:

tmpSql := 'select odrbno,delno,pdctno,units,qtyu,delchar,indate From ppcchxxb ' +

' where (delno like ''T%'' or qtyu0) and indate=''' +

formatdatetime('yyyy-mm-dd', datetimepicker1.datetime) + '''' +

' and indate=''2010-11-02'' and pdctno like ''%jm1%''';

如何在DELPHI連接SQL?

實際上TADODataSet 是一個通用的數(shù)據(jù)集組件可以代替其他三個數(shù)據(jù)集,只要分別將其CommandType 屬性設(shè)置為cmdTable、comdText 或cmdStoreProc, 對應(yīng)的并分別在其CommandText 屬性中設(shè)置一個基表(即adotable)、一個SQL 命令(adoquery)或一個存儲過程(adocommand)即可。就是說其他三個組件可以用這一個來代替。當(dāng)然,這個組件還可以打開別的文件。你可以看一下上兩個屬性的選項。

delphi SQL查詢并顯示

DBGrid組件是用來顯示數(shù)據(jù)表的。

Delphi數(shù)據(jù)庫處理

第一節(jié) BDE、ADO、InterBase和dbExpress

Delphi中處理數(shù)據(jù)庫主要有兩種方法,也就是BDE、ADO,從Delphi

6.0開始還加入了一種dbExpress方法。 另外,Delphi還提供了專門處

理Borland 公司自己的數(shù)據(jù)庫產(chǎn)品InterBase 數(shù)據(jù)庫的專門的方法。

BDE(Borland Databas Engine), 是Delphi中最古老的技術(shù),從

delphi 2.0加入BDE 技術(shù)以后,一直是Delphi處理數(shù)據(jù)庫的事實上的標

準。BDE 是一個基于驅(qū)動程序的體系結(jié)構(gòu),每一種數(shù)據(jù)格式或數(shù)據(jù)源都

有一種驅(qū)動程序來驅(qū)動相近的數(shù)據(jù)源。BDE 可以很好的支持現(xiàn)在最流行

的ODBC API方法,

ODBC是一種C/C++ 應(yīng)用程序編程接口(API ),無論是對任何一種

客戶/ 服務(wù)器關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS ),還是最流行索引順序

訪問方法(ISAM)數(shù)據(jù)庫(Jet、Foxpro), 都能很好的訪問。

同時,由于BDE 的驅(qū)動程序主要直接來自于第三方開發(fā)商,所以,

對于像Oracle這些非微軟的數(shù)據(jù)庫,執(zhí)行效率上比較高。正是這些特點,

使BDE 技術(shù)還是得到了很多數(shù)據(jù)庫開發(fā)程序員的歡迎。

ADO 技術(shù)是微軟提出來的處理關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的新

技術(shù),它基于微軟被稱為OLE DB的數(shù)據(jù)訪問模式,它是專門為了給大范

圍商業(yè)數(shù)據(jù)源提供訪問而設(shè)計的,包括傳統(tǒng)的關(guān)系型數(shù)據(jù)表、電子郵件

系統(tǒng)、圖形格式、Internet資源等。ADO 所需內(nèi)存更少,更適合大流量

和大事務(wù)量的網(wǎng)絡(luò)計算機系統(tǒng)。

ADO 頂層有三個對象:Connection、Command、Recordset。

Connection用以指定數(shù)據(jù)源,建立和數(shù)據(jù)源的連接。

Command 對象用以對數(shù)劇源執(zhí)行指定的命令,可以接受SQL 語句,

表和存儲過程的名稱,執(zhí)行SQL 查詢,更新數(shù)據(jù),插入紀錄等。

Recordset 對象表示的是來自表或命令執(zhí)行結(jié)果的記錄全集,操縱

來自提供者的幾乎所有數(shù)據(jù)。

由于ADO 技術(shù)的迅速普及,從Delphi 5.0 開始,加入了ADO 技術(shù)

的模塊,并逐步成為Delphi數(shù)據(jù)庫設(shè)計的主流。但是,和VB的ADODC 相

比,它還是有所不同的,在數(shù)據(jù)綁定上,它更多的吸收了BDE 的特點,

以做到和原來的程序兼容,同時,它又可以接受標準ADO 技術(shù)的各種屬

性和方法,在接受這些屬性和方法時,它是和數(shù)據(jù)綁定控件脫離的,當(dāng)

然從某種意義上來說,這種方案提高了執(zhí)行效率,給設(shè)計人員以更多的

選擇。

dbExpress 是Delphi 6.0加入的最新的數(shù)據(jù)庫模塊,它不使用緩存,

可以快速瀏覽大量的數(shù)據(jù),但是,不使用緩存就不能更改,所以它的標

準方式是只讀的。它一個重要的特點是交叉平臺,可以和Linux 數(shù)據(jù)庫

連接,速度相當(dāng)快。

下面的討論,將以ADO 技術(shù)為主線,最后再說明BDE 和dbExpress

的應(yīng)用方式。

第二節(jié) ADO 面板的主要組件

ADO 面板一共有7 個組件:

ADOConnection: 主要用于建立數(shù)據(jù)庫的連接;

ADOdataSet:ADO 提取和操作數(shù)據(jù)庫的主要數(shù)據(jù)集,可以直接連接

到數(shù)據(jù)庫,也可以通過 ADOConnection連接到數(shù)據(jù)庫。

ADOtable:主要用以操作和提取單個基表的數(shù)據(jù),可以直接連接到

數(shù)據(jù)庫,也可以通過 ADOConnection連接到數(shù)據(jù)庫。

ADOquery:通過SQL 語言提取數(shù)據(jù),其連接數(shù)據(jù)庫的方式和前兩種

一樣。

ADOStoredProc: 這個組件專門用于運行數(shù)據(jù)庫中的存儲過程。

ADOCommand:該組件用于運行一些SQL 命令,這個組件可以和支持

數(shù)據(jù)集的組件一起使用,也可以直接從一個基表中提取一個數(shù)據(jù)集。

RDSConnection: 一個進程或一臺計算機傳遞到另一個進程或計算

機的數(shù)據(jù)集合。

為了連接數(shù)據(jù)綁定控件,上述組件往往要和處于Data Access 中的

Datasource配合使用。

可以看出,和VB的ADODC 不同的,Delphi中解決同一個問題提供了

多種方案,看起來似乎增加了麻煩,但是卻可以給程序員更大的自由空

間,便于設(shè)計出高效率的數(shù)據(jù)庫程序來。

下面通過幾個例子來說明ADO 控件的用法。

第三節(jié) ADOtable組件

ADOtable、ADOdataSet、ADOquery和ADOStoredProc都繼承了同一

個父類TCustomADODataSet,所以,在屬性事件和方法上有很多相似的

地方,但它主要是針對數(shù)據(jù)庫中的表進行操作。

ADO -〉A(chǔ)DOtable

屬性:

Name='控件名'

ConnectionString='連接字符串'

可以通過點擊右邊的按鈕,通過向?qū)Ы?shù)據(jù)源。有時候需要

知道相對路徑,可以用下面的方法找到程序當(dāng)前的路徑:

tpath:=ExtractFilepath(Application.Exename);

文件名:=Tpath+'..\data\Test.mdb'

表明數(shù)據(jù)庫在當(dāng)前程序上一層的Data文件夾下。

TableName='表名'

Active=true

這就激活了數(shù)據(jù)源,為了和綁定控件聯(lián)系,要增加一個DadaSource

控件。事實上,所有的綁定控件都是和DadaSource聯(lián)系。

Data Access-〉DadaSource

屬性:

Dataset=ADOtable.Name

加入綁定控件:

Data Controls-〉

DBgrid(表格)

屬性

DadaSource='DadaSource.Name'

DBNavigator(導(dǎo)航條)

屬性

DadaSource='DadaSource.Name'

運行一下可以看出關(guān)系

下面介紹一下ADOtable的一些重要的方法,這些方法大部分和Table

是兼容的。

為了便于敘述,ADOtable控件的Name定為 ADOtable1

1)移動指針

第一個: ADotable1.First;

最后一個: ADotable1.Last;

下一個: ADotable1.Next;

前一個: ADotable1.Prior;

2)從字段中取出數(shù)據(jù)

通過如下方法可以訪問字段的值

ADOtable1.FieldValues['字段名']

ADOtable1.Field[索引值]

在讀寫字段的時候,又是根據(jù)需要可以加上強制類型轉(zhuǎn)換

例如:

Edit1.text:=ADOtable1.Field[0].AsString;

用下面的方法可以去除字段的性質(zhì):

ADOtable1.fielddefs[索引值].name; 字段名

ADOtable1.fielddefs[索引值].Size; 字段大小

ADOtable1.fielddefs[索引值].Datatype; 字段屬性

3)修改數(shù)據(jù):

修改數(shù)據(jù)的時候,需要先建立EDIT方法,然后用Post方法才能真

正的寫入。

ADOtable1.edit;

ADOtable1.FieldValues['姓名']:='王秀琴';

ADOtable1.post;

4)增加一條空紀錄: ADOtable1.append;

新增紀錄也可以用如下方法,在新增紀錄的同時輸入數(shù)據(jù)

ADOtable1.appendRecord(xxx,xxx,xxx,....);

5)刪除當(dāng)前紀錄:ADOtable1.delete;

如果在ADOtable1的OnBeforeDelete方法中寫下:

if messagedlg('確實要刪除嗎?',mtinformation,[mbyes,mbno],

0)=mrno then abort();

可以實現(xiàn)刪除前的提示。

6)過濾

可以用如下的方法實現(xiàn)數(shù)據(jù)的過濾

在ADOtable1的OnFilterRecord方法中寫下:

Accept:=(條件);

然后

ADOtable1.filtered:=true; 為實現(xiàn)過濾。

ADOtable1.filtered:=false; 為解除過濾。

7)指針在文件的頭尾

指針在最后一條記錄之后 ADOtable1.Eof

指針在第一條記錄之前 ADOtable1.Bof

如此可以實現(xiàn)對數(shù)據(jù)庫的遍歷

form1.ADOtable1.first;

while not form1.ADOtable1.eof do

Begin

.......

form1.ADOtable1.next;

End;

8)此外, ADOtable組件還繼承了ADO 中的RecordSet對象幾乎

全部屬性和方法,簡述如下:

with adoTable1.Recordset do

begin

//屬性

PageSize 一頁所包含的記錄數(shù)

PageCount 數(shù)據(jù)的頁數(shù)

AbsolutePage; 當(dāng)前記錄所在頁

AbsolutePosition; 當(dāng)前記錄的序號位置

BOF; 指針在第一個記錄之前

EOF; 指針在最后一個記錄之后

//方法

AddNew fieldList,Values; 創(chuàng)建新記錄,其中fieldList為用數(shù)

組表示的字段名集,Values為用數(shù)組表

示的數(shù)據(jù)集。

Cancel; 取消上一步所作的修改

Update Fields,Values; 保存對當(dāng)前記錄所作的修改

Delete; 刪除當(dāng)前記錄

Move(n); 移動n 條記錄

MoveFirst; 移動到第一條紀錄

MoveLast; 移動到最后一條紀錄

MoveNext 移動到下一條紀錄

MovePrevious 移動到上一條紀錄

Requery; 通過從新執(zhí)行對象所基于的查詢,以

更新RecordSet 對象中的數(shù)據(jù)。

end;

使用Recordset 對象來處理數(shù)據(jù)集的數(shù)據(jù),會發(fā)現(xiàn)數(shù)據(jù)幫定控件的指

針一般不會跟著移動,這實際上給設(shè)計者提供了另一個在后臺快速處理數(shù)

據(jù)的方法。

附錄:關(guān)于TActionList控件的使用

在Standard面板,提供了一個TActionList 控件,它集中了大部分按

鈕的使用方法,可以簡化按鈕的設(shè)計。

方法:

調(diào)入TActionList,雙擊,可以看到一個面板,右鍵 -〉New Standard

Action 選擇 Datasat下的適當(dāng)?shù)目刂?,可以選擇多個。

以后加入的開關(guān),只要在屬性Action 中選擇適當(dāng)?shù)捻椖烤涂梢粤?,?/p>

需要專門編程,實例見“ActionList應(yīng)用”。

第四節(jié) ADOQuery組件

和ADOtable組件一樣,ADOquery繼承了同一個父類TCustomADODataSet,

所以,上面說到的ADOtable屬性事件和方法基本上是通用的,但它主要是

針對數(shù)據(jù)庫中的SQL 命令進行操作。

下面主要說一下ADOquery特殊的地方。

1)SQL 屬性

SQL 是TStrings類型的屬性,包含了ADOquery組件要執(zhí)行的SQL 命令,

是ADOquery最為重要的屬性之一。

在應(yīng)用程序中,需要調(diào)用Open方法或者ExecSQL 方法來執(zhí)行在SQL 中

的命令。在設(shè)計階段,可以利用屬性編輯起來編寫。

例如:

Width ADOquery do

Begin

//重新寫入時,要關(guān)閉原來的查詢

Close;

width SQL do

Begin

//因為Add是在原來的基礎(chǔ)上加入,所以先清除原來的SQL命令

Clear;

Add('selsct 編號,姓名,獎金')

Add('From 獎金表')

End;

//執(zhí)行SQL 命令

Open;

End;

查詢命令也可以這樣來寫:

s1:='編號';

s2:='姓名';

s3:='金額';

with ADOquery1 do

begin

sql.Clear;

SQL.Add('select ');

SQL.Add(s1+','+s2+','+s3);

SQL.Add(' From 獎金 ');

execsql;

active:=true;

end;

效果是一樣的。

第五節(jié) ADOConnection 和 ADODataSet

雖然ADOTable和ADOQuery組件可以非常簡單的連接數(shù)據(jù)庫,但是當(dāng)需

要更加精細的控制數(shù)據(jù)庫的時候,往往需要應(yīng)用ADO 更多的方法,我們知

道,支撐ADO 的主要由Connection,Command,Recordsrt三個對象組成,

對應(yīng)的就有ADOConnection和ADOCommand控件,而Recordsrt對象屬性和方

法,封裝在ADODataSet中,同時ADODataSet本身,也具備和ADOtable組件

相同的對數(shù)據(jù)綁定控件控值的屬性和方法。

這就大大提高了對數(shù)據(jù)庫的控制能力。

在ADO 頂層有三個對象中Connection處在最頂層,用以指定數(shù)據(jù)源,

建立和數(shù)據(jù)源的連接。所以,ADOConnection必須和其它的數(shù)據(jù)控件連接

才有效,最常用的就是和ADODataSet配合。

下面首先介紹連接方法,然后再討論其它的問題

1)ADOConnection的加入和連接

加入ADOConnection

屬性:ConnectionString='連接字符串'

加入ADODataSat

屬性:Connection='ADOConnection1' ..... (ADOConnection,Name)

CommandType=cmdtable ...使用表連接

CommandText 根據(jù)上面的選擇,或選擇表,或出現(xiàn)SQL 編輯框。

Active=True 激活。

加入DataSource

屬性:Dataset=ADODataSat 完成連接,再連接數(shù)據(jù)綁定控件。

2)ADOConnection的重要屬性和方法

屬性:

a).Attributes

設(shè)置連接的數(shù)據(jù)庫自動處理事務(wù)的能力

xCommitRetaining:提交一個事務(wù)后自動開始一個新事務(wù)

xAbortRetaining :回退一個事務(wù)的同時開始一個新事務(wù)

b).Connected

標識和數(shù)據(jù)庫的連接受否處于激活(True)

方法:

c).Open(UserID,PassWord)

打開一個連接(可以提供用戶名和密碼)

d).Cancel

關(guān)閉數(shù)據(jù)庫的連接

e).Close

釋放所有的系統(tǒng)關(guān)聯(lián)資源

f).Execute 執(zhí)行一個SQL 命令。

完整的表述是

Execute(SQL命令,該命令設(shè)計的記錄數(shù)目,Option)

其中,Option的值如下

eoAsyncExecute 異步執(zhí)行指定的命令

eoAsyncFetch 給定Cache屬性的值后,再異步的取得數(shù)據(jù)

eoAsyncFetchNonBlocking 非阻塞式線程執(zhí)行

eoExecuteNoRecords 沒有返回紀錄

g).GetProcedureNames(List:Tstring);

獲取數(shù)據(jù)庫服務(wù)器上的存儲過程名稱,過程名保留在List參

數(shù)中。

f).GetTableNames(List:Tstring;SystemTables:Boolean=False)

獲取數(shù)據(jù)庫的數(shù)據(jù)表,表名存放在List參數(shù)中,SystemTables

指示是否獲取數(shù)據(jù)庫系統(tǒng)表的名稱,系統(tǒng)表是關(guān)于數(shù)據(jù)庫類型定義

和用戶信息的數(shù)據(jù)表,是數(shù)據(jù)庫本身自動產(chǎn)生的。在特殊的設(shè)計中,

這個表格可能會有用。

3)ADODataSet的屬性和方法

我們在ADOTable中討論的屬性和方法,幾乎都可以在ADODataSet中得

到應(yīng)用,但還有幾個特殊的屬性:

CommandType

主要用于控制CommandText屬性的狀態(tài),其中:

cmdtable ...CommandText使用“表名”連接

(內(nèi)部是做了SQL 對各列的查詢);

cmdTableDirect ...CommandText使用“表名”連接

(內(nèi)部不做SQL ,而是真正的表名連接);

cmdtext ....使用SQL命令文本;

cmdfile ....CommandType屬性值作為持久的文件名;

cmdStoredProc...CommandType屬性值作為存儲過程名稱

來計算;

cmdUnKnown ....不知道(默認為SQL)

CommandText

根據(jù)CommandType的設(shè)置,向提供者發(fā)出“表名”或SQL 命令。

用delphi做的程序如何連接SQL數(shù)據(jù)庫?應(yīng)該怎么操作?

1. 新建一個FORM。在控件欄找到ADO一欄,把里面的ADOConnection和ADOQuery兩個各建立一個放在FORM里。這兩個控件運行后是不可見的,所以你可以隨便放在FORM的任何位置。然后再找到DATA ACCESS一欄,把它下屬的DataSource控件拖一個放到FORM里。用這三個控件就可以建立連接了。

2.設(shè)置相關(guān)屬性,首先我們設(shè)置ADOConnection,這個控件就是與數(shù)據(jù)連接的控件。雙擊它彈出配置窗口,單擊BUILD..按鈕,出現(xiàn)數(shù)據(jù)庫鏈接屬性窗口,ACCESS數(shù)據(jù)庫就選擇有個JET4.0什么的那個數(shù)據(jù)庫,如果是本地的數(shù)據(jù)庫可以在下拉列表選擇服務(wù)器名稱或者自己直接輸入服務(wù)器名稱(遠程的直接輸入IP即可),然后輸入登錄密碼和選擇數(shù)據(jù)庫。設(shè)置完成點擊測試連接,顯示成功說明鏈接正常,單擊完成退出設(shè)置。

3 ADOQuery這個控件是用SQL操作數(shù)據(jù)庫的,在它的屬性欄有個connection屬性,點擊它的下拉菜單選擇剛剛建立好的ADOConnection1,DataSource控件則是存放結(jié)果的地方,把它的DataSet屬性設(shè)置成ADOQuery1。這樣我們就可以通過調(diào)用ADOQuery來對數(shù)據(jù)庫進行操作了。

4 鏈接好數(shù)據(jù)庫以后就可以對數(shù)據(jù)庫進行操作了。最常見的用法是建立一個DBGRID,然后把他的connection屬性選成我們的Datasource1。如果你想預(yù)先設(shè)置好SQL語句的話,在ADOQUERY的左邊屬性欄里的SQL欄,點那個三個點的省略號輸入你想查詢的SQL語句。然后ACTIVE屬性設(shè)置成TRUE,這樣一運行,在DBGRID里就會顯示你的SQL查詢結(jié)果了。

請高手檢查delphi里面的SQL語句問題

你這樣找很難找的,本身sql放在程序里就是一堆字符串,不容易辨認,再加上字符串都是相加最后到一起的,就難上加難了。

解決方法其實很簡單,你可以用事件探查器跟蹤一下數(shù)據(jù)庫腳本,把腳本放到查詢分析器里一執(zhí)行,錯在哪就看的清楚了。

也可以在程序里輸出出來看。

名稱欄目:包含nosqldelphi的詞條
網(wǎng)站地址:http://jinyejixie.com/article46/dssoceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站設(shè)計公司、全網(wǎng)營銷推廣、App開發(fā)云服務(wù)器、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
临清市| 牡丹江市| 江川县| 交口县| 海兴县| 阳新县| 理塘县| 凤山县| 南京市| 赤城县| 南华县| 五华县| 云和县| 呼玛县| 宣武区| 普宁市| 九台市| 凤冈县| 集贤县| 潼南县| 河津市| 灵宝市| 甘肃省| 双鸭山市| 景泰县| 松原市| 县级市| 武乡县| 封丘县| 公安县| 全州县| 三亚市| 三台县| 嘉义县| 竹北市| 宁蒗| 土默特右旗| 治县。| 连平县| 金川县| 佛山市|