程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> [轉載] 學習TClientDataset的使用,轉載tclientdataset

[轉載] 學習TClientDataset的使用,轉載tclientdataset

編輯:Delphi

[轉載] 學習TClientDataset的使用,轉載tclientdataset


[轉載] 學習TClientDataset的使用 http://blog.csdn.net/onebigday/article/details/6275550

 

這個控件好像很好用,以前都是用TSimpledataset,現在突然想用一下它。要用它,好像比TSimpleDataset多幾個控件,我是加了以下幾個控件,TSQLConnection,TSQLQuery,TDataSetProvider,TClientDataset,TDataSource,TDBGrid。這幾個控件中,TDBGrid的DataSource屬性設為TDataSource,TDataSource的DataSet屬性設為TClientDataset,TClientDataset的ProviderName屬性設為TDataSetProvider,TDataSetProvider的Dataset屬性設為TSQLQuery,TSQLQuery的SQLConnection屬性設為TSQLConnection。

其中還要對TDataSetProvider設置一個屬性,就是TDataSetProvider中的Options->poAllowCommandText這個屬性設置為True,如果不設置為True的話,調用TClientDataset的Open時,會出現" commandtext changes are not allowed"的錯誤。以上設置完後,就可以用ClientDataSet1.CommantText := 'SELECT * FROM MYTABLE'(注意:SQL語句一定要大寫,不然在調用ClientDataset1.ApplyUpdates時會出現“table or view does not exist”的錯誤)之類的語句設置SQL語句,然後用ClientDataSet1.Open來取得數據。在TDBGrid中修改了數據後就可以用ClientDataset1.ApplyUpdates(0)來把數據更新到數據庫中了。

對於有二進制字段的,可以把TDataSetProvider->Options->poFetchBlobOnDemand設為True。這樣程序一開始並不加載Blob字段的數據,如果用到了,TClientDataset會自動加載,對於我們程序員來說,是透明的,不需做額外的事,如正常一樣訪問TClientDataSet中的Blob字段就行了,要注意的是TClientDataSet的CommantText一定要有Select到Blob的SQL語句,而且,SQL語句一定要是大寫的,不然也會出現“table or view does not exist”的錯誤。

完整的測試代碼如下:

pas代碼:

[delphi] view plaincopyprint?

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DBXpress, FMTBcd, SqlExpr, StdCtrls, DB, DBClient, Provider,

Grids, DBGrids;

 

type

TForm1 = class(TForm)

DBGrid1: TDBGrid;

DataSource1: TDataSource;

DataSetProvider1: TDataSetProvider;

ClientDataSet1: TClientDataSet;

SQLConnection1: TSQLConnection;

Button1: TButton;

Button2: TButton;

SQLQuery1: TSQLQuery;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ClientDataSet1.Close;

ClientDataSet1.CommandText := 'SELECT * FROM MYTABLE1'; //SQL語句一定要大寫,不然在調用ClientDataset1.ApplyUpdates(0)時會出現“table or view does not exist”的錯誤

ClientDataSet1.Open;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

ClientDataSet1.ApplyUpdates(0);

end;

 

end.

 

dfm代碼如下:

[delphi] view plaincopyprint?

object Form1: TForm1

Left = 245

Top = 238

Width = 1142

Height = 656

Caption = 'Form1'

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object DBGrid1: TDBGrid

Left = 152

Top = 88

Width = 529

Height = 233

DataSource = DataSource1

TabOrder = 0

TitleFont.Charset = DEFAULT_CHARSET

TitleFont.Color = clWindowText

TitleFont.Height = -11

TitleFont.Name = 'MS Sans Serif'

TitleFont.Style = []

end

object Button1: TButton

Left = 528

Top = 32

Width = 75

Height = 25

Caption = 'Button1'

TabOrder = 1

OnClick = Button1Click

end

object Button2: TButton

Left = 704

Top = 40

Width = 75

Height = 25

Caption = 'Button2'

TabOrder = 2

OnClick = Button2Click

end

object DataSource1: TDataSource

DataSet = ClientDataSet1

Left = 160

Top = 24

end

object DataSetProvider1: TDataSetProvider

DataSet = SQLQuery1

Options = [poAllowCommandText]

Left = 288

Top = 24

end

object ClientDataSet1: TClientDataSet

Aggregates = <>

Params = <>

ProviderName = 'DataSetProvider1'

Left = 224

Top = 16

end

object SQLConnection1: TSQLConnection

ConnectionName = 'OracleConnection'

DriverName = 'Oracle'

GetDriverFunc = 'getSQLDriverORACLE'

LibraryName = 'dbexpora.dll'

LoginPrompt = False

Params.Strings = (

'DriverName=Oracle'

'DataBase=192.168.1.100'

'User_Name=qgtg'

'Password=qgtg'

'RowsetSize=20'

'BlobSize=-1'

'ErrorResourceFile='

'LocaleCode=0000'

'Oracle TransIsolation=ReadCommited'

'OS Authentication=False'

'Multiple Transaction=False'

'Trim Char=False')

VendorLib = 'oci.dll'

Left = 376

Top = 24

end

object SQLQuery1: TSQLQuery

MaxBlobSize = -1

Params = <>

SQLConnection = SQLConnection1

Left = 336

Top = 24

end

end

 


[轉載]學習怎深刻忏悔

大寶恩師在道次第班學習討論《入菩薩行論》忏悔品時的開示(農歷二ΟΟ七年臘月十二日午後於大師殿前)第一次聽到大家討論,那麽我感到:第一個,方式方法是對頭了,這一次討論的方式裡邊呢,每一個人的思想檢查,我感覺到還不夠深入,最好再深化一下。我們這個討論學習的目的就是改變思想,使我們的思想如何能跟佛的經論,能夠配合起來,那麽如果說,我們討論的時候是討論,思想行動還是另外一套,這個討論就是意義不太大了。我們繼續學習了之後,又討論了,功夫下了很多,那就希望收到一定效果,這個效果就是說,我們的思想行動能夠跟起經論方面轉過去,怎麽轉過去呢?就要挖掘自己的思想了,深刻的挖掘,把自己過去爲什麽要犯錯的根子找出來,根子找出來了,然後再看到底對不對,是不對的,那把它斷掉,生死(根子)一斷永斷了,如果表面上,膚淺的,說書上怎麽說該怎麽做,過一會呢,或者是你碰到一些事情呢,把書忘掉了,老的習氣出來了,那就是經上說的話怎麽作用都沒有了,所以說我們希望學習呢,要把經論的精神深入到自己的思想裡頭去,要深入(到)思想裡去的話,決定要産生一種觸動,就把思想裡邊的髒東西,挖出來,然後把新的拿進去,我們將來修的《忏悔品》的意思要知道,那裡邊我記得有個比喻,一張、一快很髒的布,你如果要去畫圖的話,決不能畫一個好圖案出來的,那麽你要畫圖,要用髒布畫,要洗的干干淨淨的,然後你畫出來,顔色也鮮的,又好看,那麽這是忏悔的作用了。我們現在要把經論的東西,要真的拿到自己心裡邊去,那麽心裡髒東西,第一要把它洗掉,否則就象那新的東西都變色了,也不好看了,也就變質了嗎,就是說雖然把我們是同樣化了很多時間,同樣化了很多時間討論,也是用了很多功夫,但是效果不大一樣,隨著《忏悔品》,我們現在正在搞忏悔嘛,這個作用是很大的,希望大家把關鍵的問題抓住之後,那麽以後的這個討論的或學習的利益就會源源不斷湧現出來啊,今天我們正好遇到《忏悔品》(剛剛有居士等忏悔過)也是很巧的,就是我們把《忏悔品》抓住,如何把自己心裡把過去髒東西徹底的洗干淨,越洗干淨越好,這樣容納新的佛的這個東西進來呢,才能是保持原味不變,如果我們不洗干淨,多少要變點,既然是不洗的話,那你容納的東西,全部變質了,那就是相似佛法了,這個好的作用起不來了,希望大家就在這個忏悔方面多下點功夫,每個人不能說一點過失也沒有,每時每刻,哪怕一念都會起一些不正當這個惡念會起來,那麽都要忏悔這些啊,那麽就這個樣子了。(回向)
 

delphi var ADataSet: TClientDataSet;TClientDataSet是個什類型

是cds格式的,難道要打開這樣的數據庫還要裝一個delphi嗎?有什麼工具可以支持沒有直接的資料,可以通過TClientDataSet自己轉換 應該沒有這種專業的程序
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved