線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2595
推到 Plurk!
推到 Facebook!

請問FireBird 要如何新增,刪除......?

答題得分者是:P.D.
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-08-22 10:38:43 IP:211.75.xxx.xxx 訂閱
目前採用Delphi xe2 的 Interbase 去連結
使用元件:IBDatabase1,IBQuery1,IBTransaction1,DataSource1,DBGrid1
已可連結資料到DBGrid1上了。
但要如何「新增、刪除、修改」其中一項即可~~~~~
//-------------------------ok------------------------------------------------------
IBQuery1.SQL.Clear;
IBQuery1.Close;
BQuery1.SQL.Text := 'select * from test_tb where s_no=''0001'' ';
IBQuery1.Open;
//------------------------如何用參數,但失敗,var1有在那特別設定嗎?--------------------------------
IBQuery1.SQL.Clear;
IBQuery1.Close;
IBQuery1.SQL.Text := 'SELECT * FROM test_db where s_no = ''' trim(Edit1.Text) ''' '; //是這樣?
IBQuery1.SQL.Text := 'SELECT * FROM test_db where s_no = :var1'; //還是這樣......................
IBQuery1.ParamByName('var1').AsString := Edit1.Text;
IBQuery1.Open;

//-------------------如何新增資料?還是會錯誤--------------------
IBQuery1.SQL.Clear;
IBQuery1.SQL.Text:=IBUpdateSQL1.InsertSQL.Text;
IBQuery1.Params.parambyname('S_NO').AsString:='0003';
IBQuery1.Params.parambyname('MEMO').AsString:=Trim(Edit1.Text);
IBQuery1.ExecSQL;

IBUpdateSQL1.InsertSQL 的sql 如下
insert into TEST_DB
(S_NO,MEMO)
values
(:S_NO, :MEMO)

放錯版了拍謝~~~~~~~~
希望有大大能指導一下~~~~


編輯記錄
chris681016 重新編輯於 2012-08-21 20:41:19, 註解 無‧
chris681016 重新編輯於 2012-08-21 20:42:24, 註解 無‧
P.D.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-08-22 11:04:36 IP:111.255.xxx.xxx 未訂閱
只能提供到這樣, 當初我FireBird不會, 也是花了$$請人一對一的教學
重點在啟動交易 Transaction
以及要以TIBQUERY來異動時,
SQL 下法 select MARRY from D6000
或使用 Insert into 方式

insert into D6000
(MARRY)
values
(:MARRY)

則傳值 就以 IBQ_D6000.FieldByName('MARRY').Value:= xxx 來表示,

但你必須在 IBQUERY 中加入TIBUPDATESQL 元件

如果不想這麼麻煩, 可用 TIBSQL元件來取代 TIBquery 及 TIBUpdateSQL 兩組

而 TIBsql 及 TIBQuery 最大的差異點在於 IBquery 會回俴資料集, IBsql 只有單向異動, 不會回傳結果


新增
if not IBT_D6000.InTransaction then IBT_D6000.StartTransaction;
IBQ_D6000.Append;
IBQ_D6000MARRY.Value := 'N';
IBQ_D6000CREATEDATE.Value := DatetoStr(Date);
IBQ_D6000CREATETIME.Value := TimetoStr(Time);

修正
if not IBT_D6000.InTransaction then IBT_D6000.StartTransaction;
IBQ_D6000.Edit;
IBQ_D6000MODIFYDATE.Value:= DatetoStr(Date);
IBQ_D6000MODIFYTIME.Value:= TimetoStr(Time);

刪除
if not IBT_D6000.InTransaction then IBT_D6000.StartTransaction
IBQ_D6000.Delete;

回存
try
IBQ_D6000.ApplyUpdates;
IBT_D6000.CommitRetaining;
except
on E: Exception do begin
IBT_D6000.Rollback;
IBQ_D6000.Open;
end;
end;


SQL語法

"select ..... from D6000"
編輯記錄
P.D. 重新編輯於 2012-08-21 21:15:43, 註解 無‧
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-08-22 11:09:47 IP:211.75.xxx.xxx 訂閱
 感謝大大怎麼快回覆,研就研就一下~~~~~~~~~~~~~~~~。
因為公司打算用不用錢的資料庫,請問這是比較好的嗎?客戶端安裝是不是也只要幾個dll即可(還沒測式中~~),
再問這資料庫可以跟「mssql」連嗎為了以後客戶需要?
^_______________________^
P.D.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-08-22 11:22:48 IP:111.255.xxx.xxx 未訂閱
FireBird 是一套資料庫系統, 就如同 MySQL, MS-SQL等是一樣的, 
你看過 各家資料庫的眼晴裡容的下別家的資料庫系統嗎?
FireBird 的確是一個好用, Free 的版本, 我現在開發的也是使用 FireBird,
而 InterBase 與 FireBird 是同門師兄弟, 最早是InterBase先出來(gdb), 而後兄弟分家,
原來InterBase的一組人出來發展了FireBird, InterBase是有授權收費的(到目前為止都是),
FireBrid 是採用OpenSource 觀念, 所以並沒有實質付費行為, 但據我所知, 目前 InterBase 與 Firebird
是漸行漸遠, 兩者越來越不能相容, 所以, 要決定使用那一種資料庫, 是一個很大的學問,
是要考量成本費用的問題, 還是考量主流系統能提供的技術資源..
所有資料庫不是說放一支dll就可以的, 你應該要十分清楚才是!
===================引 用 chris681016 文 章===================
感謝大大怎麼快回覆,研就研就一下~~~~~~~~~~~~~~~~。
因為公司打算用不用錢的資料庫,請問這是比較好的嗎?客戶端安裝是不是也只要幾個dll即可(還沒測式中~~),
再問這資料庫可以跟「mssql」連嗎為了以後客戶需要?
^_______________________^
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-08-22 11:32:08 IP:211.75.xxx.xxx 訂閱
 了解感謝大大分享謝謝^^,努力研就新增中........................

GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2012-08-22 14:54:09 IP:59.120.xxx.xxx 未訂閱
FireBird我認為表現比MySQL更加亮眼

MySQL詭異的授權方式在發佈上有很大的盲點,這部份可以參閱蕭沖大的筆記
FireBird就沒有這方面的問題

如果想省下部署的時間,不要再裝DB Client Setup之類的東西,
那麼,可參考的資料庫目前只有 SQLite 和 FireBird
SQLite基本上沒有比較好的元件可以用,好用的都要付錢。

FireBird只要選擇Embedded版本,再加上dbExpress,其實真的只需要幾個dll就可以完成部署工作
只要你用的是Delphi / CB 2007以上的版本,就有免費而且仍然在更新的Driver可以使用

如果你的工作可能會常常切換Database開發,我是比較建議你採通用的元件來處理,如ADO / DBX

當然專用的有專用的好處,畢竟是針對特定資料庫來寫的,比較能發揮該資料庫的效能

話說,DBEXPRESS從一開始就是走Interbase路線,dbx的用法一路走來也沒有太大的不同
我想針對效能的話,應該也不會落後到哪邊

===================引 用 P.D. 文 章===================
FireBird 是一套資料庫系統, 就如同 MySQL, MS-SQL等是一樣的,
你看過 各家資料庫的眼晴裡容的下別家的資料庫系統嗎?
FireBird 的確是一個好用, Free 的版本, 我現在開發的也是使用 FireBird,
而 InterBase 與 FireBird 是同門師兄弟, 最早是InterBase先出來(gdb), 而後兄弟分家,
原來InterBase的一組人出來發展了FireBird, InterBase是有授權收費的(到目前為止都是),
FireBrid 是採用OpenSource 觀念, 所以並沒有實質付費行為, 但據我所知, 目前 InterBase 與 Firebird
是漸行漸遠, 兩者越來越不能相容, 所以, 要決定使用那一種資料庫, 是一個很大的學問,
是要考量成本費用的問題, 還是考量主流系統能提供的技術資源..
所有資料庫不是說放一支dll就可以的, 你應該要十分清楚才是!
===================引 用 chris681016 文 章===================
感謝大大怎麼快回覆,研就研就一下~~~~~~~~~~~~~~~~。
因為公司打算用不用錢的資料庫,請問這是比較好的嗎?客戶端安裝是不是也只要幾個dll即可(還沒測式中~~),
再問這資料庫可以跟「mssql」連嗎為了以後客戶需要?
^_______________________^
編輯記錄
GrandRURU 重新編輯於 2012-08-22 00:55:41, 註解 無‧
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2012-08-22 15:14:20 IP:211.75.xxx.xxx 訂閱
感謝2位大大的回覆^_____________________________^
有用過dbExpress去連,但好像連不上,驅動程式有到這下載,我目前是用64位元的在測。
http://sourceforge.net/projects/firebird/files/ 但目前暫時沒特別的研就~~~
也是有考慮到「專用」和「非專用」怕會有一些問題,所以先用基本的InterBase去連結。
等到 InterBase 測式好在來用DBEXPRESS連,不過現在還是無法新增哈~~~~。
目前在用別的,有問題在大大們,希望大大多多指導^__________________^。
目前進度~~
IBQuery2.Close;
IBQuery2.SQL.Clear;
IBQuery2.SQL.Text:=TRIM(IBUpdateSQL2.InsertSQL.Text);
if IBQuery2.Active=FALSE then IBQuery2.Active:=TRUE;
if not IBTransaction2.InTransaction then IBTransaction2.StartTransaction;
IBQuery2.Append;
IBQuery2.ParamByName('S_NO').Value:='0003';
IBQuery2.ParamByName('MEMO').Value:='ABCDE';
//IBQuery2.Post;
//IBQuery2.ApplyUpdates;
//IBTransaction2.CommitRetaining;

//----------------IBUpdateSQL2的 InsertSQL ------------------
insert into test_tb
(S_NO,MEMO)
values
(:S_NO, :MEMO)

按下新增後會出現:......................Column unknow s_no at line........................
意思是沒定義 s_no 這個嗎,要在那定義內,有在
IBQuery2.Params內定義s_no 但還是會錯,在研就一下~~~~~




編輯記錄
chris681016 重新編輯於 2012-08-22 01:16:30, 註解 無‧
系統時間:2017-10-24 12:06:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!