鍒╃敤Delphi寮鍙戠綉缁滄暟鎹簱搴旂敤
鍙戝竷: 2008-6-26 20:19 | 浣滆: admin | 鏌ョ湅: 11娆
Delphi 鏄叿鍙鍖栫晫闈㈢殑闈㈠悜瀵硅薄缂栫▼璇█锛屽畠浠ュ叾鍔熻兘寮哄ぇ銆佺畝渚挎槗鐢ㄧ瓑璇稿鐗规э紝娣卞彈缂栫▼浜哄憳鐨勬杩庛侱elphi 涓彁渚涗簡鏁版嵁搴撳紩鎿 BDE(Borland Database Engine)锛屽苟鍐呭惈浼楀鐨勬暟鎹簱璋冪敤鏋勪欢锛屼负缂栫▼浜哄憳寮鍙戝鎴/鏈嶅姟鍣ㄥ簲鐢ㄧ▼搴忔彁渚涗簡鏂逛究銆傞氬父鎯呭喌涓嬶紝鍒╃敤 Delphi 寮鍙戞暟鎹簱搴旂敤绋嬪簭锛屽彲浠ヤ娇鐢═Table銆乀DataSource銆乀DBEdit銆乀DBNavigator绛夋瀯浠躲傚彧瑕佹纭缃簡鏋勪欢鐨勬煇浜涘睘鎬э紝鍐嶇紪鍐欏繀瑕佺殑绋嬪簭浠g爜瀵逛竴浜涚壒瀹氫簨浠惰繘琛屽鐞嗭紝灏辫兘澶熷畬鎴愬澶氱鏁版嵁搴撹繘琛岀殑鏁版嵁澶勭悊锛屼緥濡傦細璁板綍鐨勮緭鍏ャ佷慨鏀广佸垹闄ゅ拰鏌ヨ绛夈傝繖鏍峰仛铏界劧鍙渶瑕佺紪鍐欐瀬灏戦噺鐨勭▼搴忎唬鐮佸氨鑳借揪鍒板緢濂界殑鏁堟灉锛屼絾濡傛灉鍦ㄧ▼搴忚璁¤繃绋嬩腑锛屾煇浜涙暟鎹〃鐨勭粨鏋勫彂鐢熶簡鏀瑰彉锛屽垯蹇呴』淇敼涓庢鏁版嵁琛ㄦ湁鍏崇殑鎵鏈夋瀯浠剁殑灞炴э紝杩欏皢浣跨▼搴忓憳闄峰叆绻佺悙鐨勯噸澶嶅姵鍔ㄤ腑銆
銆銆涓洪伩鍏嶄笂杩扮殑楹荤儲锛屾垜浠彲浠ュ湪缂栧啓缃戠粶鏁版嵁搴撳簲鐢ㄧ▼搴忔椂閲囩敤缁撴瀯鍖栨煡璇㈣瑷 SQL(Structured Query Language)锛岃繖鏍蜂笉浠呭彲浠ユ洿鏂逛究鍦颁笌璇稿 SQL Server銆丱racle 绛夊悇绉嶅悗鍙版暟鎹簱杩涜鍔ㄦ佺殑鏁版嵁浜ゆ崲锛岃屼笖鍙互浣跨▼搴忕殑淇敼鍜岀Щ妞嶆洿鍔犵伒娲汇傛垜浠互鏁版嵁杈撳叆妯″潡涓轰緥锛岃鏄庡紑鍙戝鎴/鏈嶅姟鍣ㄥ簲鐢ㄧ▼搴忔椂濡備綍閲囩敤 SQL 璇彞瀹炵幇鏁版嵁澶勭悊鍔熻兘銆傞鍏堬紝鍒ゆ柇鏄惁宸茬粡鏈変簨鍔″鐞嗙▼搴忓湪杩愯锛屽鏋滄湁锛屽皢鍏跺洖鍗(rollback)锛涘鏋滄病鏈夛紝鍒欏惎鍔ㄤ竴涓柊鐨勪簨鍔★紝涓烘暟鎹殑鏈缁堝鐞嗗仛鍑嗗銆傚叾娆★紝鏄缃 SQL 璇彞锛屽苟灏嗗叾鍐欏叆 TQuery 鏋勪欢涓傛渶鍚庯紝灏嗕簨鍔℃彁浜ゆ垨鍥炲嵎锛岃嚦姝ゅ畬鎴愪竴鏉¤褰曠殑鏁版嵁杈撳叆銆
銆銆涓嬮潰鏄互椤甸潰涓殑 TEdit 绫诲瀷缂栬緫妗嗗唴瀹逛綔涓烘暟鎹簮锛屽悜鏁版嵁搴撹緭鍏ヨ褰曠殑杩囩▼浠g爜锛
銆銆procedure DataInsert(const qName:TQuery;
銆銆銆銆銆銆銆銆銆銆銆銆szDBName:string;iNum:Integer;
銆銆銆銆銆銆銆銆銆銆銆銆iMark:array of Integer;eName:array of TEdit);
銆銆var
銆銆i : Integer;
銆銆szSQL : string;
銆銆begin
銆銆if DataModule1.DataBase1.InTransaction=true then
銆銆DataModule1.DataBase1.RollBack;
銆銆DataModule1.DataBase1.StartTransaction;
銆銆szSQL := 'INSERT INTO '+szDBName+' VALUES('
銆銆for i:=0 to iNum-1 do
銆銆銆begin
銆銆銆銆if iMark[i]=0 then
銆銆銆銆銆szSQL := szSQL+eName[i].Text {闈炲瓧绗︽柟寮弣
銆銆銆銆else
銆銆銆銆銆szSQL := szSQL+'"'+eName[i].Text+'"'; {瀛楃鏂瑰紡}
銆銆銆銆if i=iNum-1 then
銆銆銆銆銆szSQL := szSQL+')'
銆銆銆銆else
銆銆銆銆銆szSQL := szSQL+',';
銆銆銆銆end;
銆銆銆銆qName.Close; {鍏抽棴鏌ヨ}
銆銆銆銆qName.SQL.Clear; {娓匰QL鐗规у唴瀹箎
銆銆銆銆qName.SQL.ADD(szSQL); {娣诲姞SQL鍐呭}
銆銆銆銆szSQL := 'SELECT * FROM '+szDBName;
銆銆銆銆qName.SQL.ADD(szSQL);
銆銆銆銆qName.Open; {杩斿洖缁撴灉闆唥
銆銆銆銆DataModule1.DataBase1.Commit;
銆銆銆銆end;
浠ヤ笂杩囩▼鍖呭惈浜斾釜鍙傛暟锛屽疄鐜颁粠椤甸潰涓殑涓绯诲垪缂栬緫妗嗕腑璇诲彇鏁版嵁锛屽苟鍚戞寚瀹氭暟鎹〃杈撳叆鐨勫姛鑳姐傚叾涓紝鍙傛暟 qName 涓洪〉闈腑鎵浣跨敤鐨 TQuery 绫绘瀯浠剁殑鍚嶇О锛涘弬鏁 szDBName 鏄暟鎹〃鐨勫悕绉帮紱鍙傛暟eName 鏄 TEdit 绫诲瀷鐨勬暟缁勶紝鍒楀嚭浜嗛〉闈腑鍖呭惈鏁版嵁鐨勫悇缂栬緫妗嗗悕绉帮紱鍙傛暟 iNum 鏄暟鎹〃涓殑瀛楁涓暟锛屼篃鍗崇紪杈戞鐨勪釜鏁帮紱鍙傛暟 iMark 鏄竴涓暣鏁扮被鍨嬬殑鏁扮粍锛岃鍙傛暟琛ㄦ槑鐩稿簲瀛楁鏄互浣曠鏂瑰紡杈撳叆鐨勶紝濡傛灉鏄瓧绗︽柟寮忥紝闇瑕佸湪鏁版嵁鍓嶅悗涓ょ鍔犱笂寮曞彿銆傞渶瑕佹敞鎰忕殑鏄細鍦ㄨ皟鐢ㄦ湰杩囩▼涔嬪墠锛屽簲灏嗘暟鎹簱杩炴帴鎵撳紑锛
銆銆DataModule1.DataBase1.Connected := true;
銆銆杩囩▼璋冪敤瀹屾垚鍚庯紝灏嗘暟鎹簱杩炴帴鏂紑锛
銆銆ataModule1.DataBase1.Connected := false;
鍙﹀锛屽紑鍙戠綉缁滄暟鎹簱搴旂敤绋嬪簭鏃讹紝杩樺彲浠ヤ娇鐢ㄥ瓨鍌ㄨ繃绋嬶紝鍗筹細灏嗛鍏堢紪璇戣繃鐨 SQL 璇彞瀛樺偍鍦ㄦ湇鍔″櫒涓娿傚瓨鍌ㄨ繃绋嬫彁鍓嶈繍琛岋紝涓斾笉涓庣▼搴忎唬鐮佷竴鍚屽瓨鍌ㄥ拰缂栬瘧锛屽洜姝ゅ叾瀵瑰簲涓荤▼搴忎腑鐨勪唬鐮佺浉瀵圭畝娲侊紝杩愯閫熷害涔熻緝蹇係QL 璇彞鐨勯泦涓瓨鏀撅紝浣垮叾淇敼鏇村鏄撱
銆銆瑕佸垱寤哄悜鏁版嵁琛ㄤ腑杈撳叆鏁版嵁鐨勫瓨鍌ㄨ繃绋嬶紝浠g爜缂栧啓涓句緥濡備笅锛
銆銆CREATE PROC ProcTest1
銆銆@inttest smallint
銆銆,@strtest char(4) output
銆銆AS
銆銆INSERT INTO TEST_User.TRANS_TEST
銆銆VALUES(@inttest,@strtest)
銆銆SELECT @strtest,* FROM TEST_User.TRANS_TEST
浠ヤ笂浠g爜鍚戞暟鎹〃 TEST_User.TRANS_TEST 娣诲姞鏁版嵁锛岃鏁版嵁琛ㄥ寘鎷袱涓瓧娈碉細绗竴涓瓧娈典负 smallint 绫诲瀷鐨勬暟鎹紝鍙傛暟绫诲瀷瀹氫负 Input(鍦ㄥ瓨鍌ㄨ繃绋嬩腑鍙己鐪)锛涚浜屼釜瀛楁鏁版嵁涓洪暱搴︿负4 鐨勫瓧绗︾被鍨嬶紝鍙傛暟绫诲瀷涓 Output銆
銆銆鍏舵ā鍧楃▼搴忕殑缂栧啓涓 DataInsert 杩囩▼鐩镐技锛屽尯鍒富瑕佸湪浜庢ā鍧楃殑涓棿閮ㄥ垎锛屽搴旂殑涓昏浠g爜濡備笅锛
銆銆StoredProc1.Close;
銆銆{鍏抽棴瀛樺偍杩囩▼}
銆銆StoredProc1.Params .ParamType := ptInput;
銆銆{璁剧疆瀛樺偍杩囩▼鐨勫弬鏁扮被鍨媫
銆銆 StoredProc1.Params .AsInteger := 1;
銆銆{璁剧疆瀛樺偍杩囩▼涓弬鏁扮殑鏁版嵁}
銆銆StoredProc1.Params .ParamType := ptOutput;
銆銆toredProc1.Params .AsString := 'abcd';
銆銆StoredProc1.Open; {鎵撳紑瀛樺偍杩囩▼}
鍏朵腑锛孲toredProc1 鏄 TStoredProc 绫诲瀷鐨勬瀯浠跺悕绉帮紱Params 鏄瓨鍌ㄨ繃绋嬩腑鐨勭涓涓弬鏁帮紝瀵瑰簲瀛樺偍杩囩▼ ProcTest1 鍙互鐢≒aramByName('@inttest')浠f浛锛涘瓨鍌ㄨ繃绋嬬殑绗簩涓弬鏁颁笌鍏剁被浼笺
銆銆瀹為檯涓婏紝缂栧啓瀵圭綉缁滄暟鎹簱杩涜鍏朵粬鏁版嵁澶勭悊(濡傦細淇敼銆佸垹闄ゅ拰鏌ヨ绛)鐨勬ā鍧楋紝涓庢暟鎹殑杈撳叆妯″潡澶т綋鐩镐技锛岃繖閲屽氨涓嶅啀璧樿堪浜嗐




发表于 2009-1-5 19:48
| 











