SQL語法請教 |
尚未結案
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
pgdennis
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
引言: 各位前輩﹒ 小弟剛開始學SQL語法﹒請問如下SQL是哪里出錯了﹖ Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values('A0010','忻晟')') 另外﹐若小弟想將學生和姓名值利用Edit1和Edit2中使用者輸入的值來代替﹐SQL該如何寫呢﹖ 謝謝﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/06/25 23:06:57Query1.SQL.Add('Insert Into 學生.db(學號,姓名)Values(' quotedstr('A0010') ',' quotedstr('忻晟') ')') 永遠追不上技術更新的速度~~ ![]()
------
星期一,二...無窮迴圈@@ |
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
記得一件事, 在 字串 中要使用 ' (單引號) 的話, 就要連續出現兩次, 代表一個單引號, 如: 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 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
感謝前輩指點﹒ 請問﹕
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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |