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

SQL語法請教

尚未結案
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-25 23:03:55 IP:63.84.xxx.xxx 未訂閱
各位前輩﹒ 小弟剛開始學SQL語法﹒請問如下SQL是哪里出錯了﹖ Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values('A0010','忻晟')') 另外﹐若小弟想將學生和姓名值利用Edit1和Edit2中使用者輸入的值來代替﹐SQL該如何寫呢﹖ 謝謝﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/06/25 23:06:57
------
忻晟
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-25 23:30:53 IP:61.59.xxx.xxx 未訂閱
引言: 各位前輩﹒ 小弟剛開始學SQL語法﹒請問如下SQL是哪里出錯了﹖ Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values('A0010','忻晟')') 另外﹐若小弟想將學生和姓名值利用Edit1和Edit2中使用者輸入的值來代替﹐SQL該如何寫呢﹖ 謝謝﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/06/25 23:06:57
Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values(' quotedstr('A0010') ',' quotedstr('忻晟') ')') 永遠追不上技術更新的速度~~
------
星期一,二...無窮迴圈@@
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-25 23:38:01 IP:61.62.xxx.xxx 未訂閱
記得一件事, 在 字串 中要使用 ' (單引號) 的話, 就要連續出現兩次, 代表一個單引號, 如:    showmessage('I''m a student'); 會 show 出 I'm a student 相同的, 在 sql command 中, 要出現單引號的邏輯是完全相同的, 你要將 sql command 修改一下: Query1.SQL.Add('Insert Into 學生.db (學號,姓名) Values (''A0010'',''忻晟'')'); 即可 若是要用 edit1, edit2 中的值來取代, 一樣是在組 sql command , 所以就這樣下: Query1.SQL.Add('Insert Into 學生.db (學號,姓名) Values ('''+Edit1.Text+''','''+Edit2.Text+''')'); 就可以了!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-25 23:39:14 IP:63.84.xxx.xxx 未訂閱
感謝前輩的指點﹐問題已經解決﹒ 請教前輩 Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values(' quotedstr('A0010') ',' quotedstr('忻晟') ')'); 中的(' quotedstr(' ') ')是什么意思﹖ 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-26 00:03:41 IP:63.84.xxx.xxx 未訂閱
感謝前輩指點﹒ 請問﹕ 1﹒Query1.SQL.Add('Insert Into 學生.db (學號,姓名) Values ('''+Edit1.Text+''','''+Edit2.Text+''')'); 是否同等于Query的Params或ParamByName的做法﹖ 2﹒' Edit1.Text '是何意義﹖ 3﹒如果有欄位形態的不相同﹐是否還需要在SQL中轉形態﹐比如說學號為數字Integer形態﹐姓名為字串形態﹐該如何處理SQL. 謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-26 00:26:57 IP:61.62.xxx.xxx 未訂閱
    QuotedStr 會在傳入字串的前後加上 ' (單引號)    
procedure TForm1.Button2Click(Sender: TObject);
var
  a: String;
begin
  a:= 'test';
  ShowMessage(QuotedStr(a));  //秀出 'test'
end;
自組 sql command 的語法不等同 params 的用法, 用 params 的目的就是為了避免 datatype 型態轉換上的問題, 我們都知道字串可以用單引號包著送入資料庫, 但是若是數字, 或是日期, 時間等 datatype 的話, 用 params 會比較方便, 如:
procedure TForm1.Button3Click(Sender: TObject);
begin
  Query1.SQL.Clear;
  Query1.SQL.Add('insert into test (name, age) values :name, :age');
  Query1.ParamByName('name').AsString := 'John';
  Query1.ParamByName('age').AsInteger := 12;
  Query1.ExecSQL;
end;
至於 ' Edit1.Text ' 的目的只是在拆自組的字串而已, 你注意觀察一下 SQL.Add 裡是要傳一個字串, 我將其獨立出來: 'Insert Into 學生.db (學號,姓名) Values ('''+Edit1.Text+''','''+Edit2.Text+''')' 是不是就是: 'Insert Into 學生.db (學號,姓名) Values ('''+ Edit1.Text+ ''','''+ Edit2.Text+ ''')' 用四個加號相加這五個字串, 了解嗎?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-26 01:18:46 IP:63.84.xxx.xxx 未訂閱
謝謝timhuang前輩的詳細指點﹐小弟了解了﹒ 真誠感謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-05-20 13:34:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!