請問FireBird 要如何新增,刪除......? |
答題得分者是:P.D.
|
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
目前採用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) 放錯版了拍謝~~~~~~~~ 希望有大大能指導一下~~~~ 編輯記錄
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
只能提供到這樣, 當初我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
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
FireBird 是一套資料庫系統, 就如同 MySQL, MS-SQL等是一樣的,
你看過 各家資料庫的眼晴裡容的下別家的資料庫系統嗎? FireBird 的確是一個好用, Free 的版本, 我現在開發的也是使用 FireBird, 而 InterBase 與 FireBird 是同門師兄弟, 最早是InterBase先出來(gdb), 而後兄弟分家, 原來InterBase的一組人出來發展了FireBird, InterBase是有授權收費的(到目前為止都是), FireBrid 是採用OpenSource 觀念, 所以並沒有實質付費行為, 但據我所知, 目前 InterBase 與 Firebird 是漸行漸遠, 兩者越來越不能相容, 所以, 要決定使用那一種資料庫, 是一個很大的學問, 是要考量成本費用的問題, 還是考量主流系統能提供的技術資源.. 所有資料庫不是說放一支dll就可以的, 你應該要十分清楚才是! ===================引 用 chris681016 文 章=================== 感謝大大怎麼快回覆,研就研就一下~~~~~~~~~~~~~~~~。 因為公司打算用不用錢的資料庫,請問這是比較好的嗎?客戶端安裝是不是也只要幾個dll即可(還沒測式中~~), 再問這資料庫可以跟「mssql」連嗎為了以後客戶需要? ^_______________________^ |
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
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
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
感謝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, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |