Delphi資料庫開發之SQL寫法的技巧1

2022-02-16 14:26:19 字數 1306 閱讀 8999

資料庫應用程式肯定離不開sql語句的應用,而平常用得最多的應該是tquery,tadoquery一類的控制項,其他的還有tupdatesql,tadocommand等控制項。sql語句就是在以上兩種控制項的sql屬性中設定。sql屬性的資料型別是tstringlist。可以用sql.text、sql.add()、sql.clear等方式進行操作。

簡單來說就是將乙個字串賦值給sql屬性,實現資料的操作。這個字串就是sql語句。例如:表table1,有欄位 a(int) b(varchar2) c(long row)。如果要插入一條記錄,其中a=2,b='pic'。在dbms中可以執行

sql語句的地方寫入insert into table1(a,b) values(2,'pic')。 但在delphi的控制項中有些地方要注意。b本身是字串型別,對其賦值要加引號。而sql.text屬性是string型別,所以在delphi中要這樣寫 sql.text:='insert into table1(a,b) values (2,''pic'')'; 值'pic'前後都要用兩個單引號。因為ab的值很多時候是在執行時獲得,所以可以這樣寫 sql.text:='insert into table1(a,b) values ('+inttostr(inta)+','''+strb+''')'; inta ,strb都是變數。但如果strb的值時帶有單引號的話,問題就會出現了,因為這條sql語句最終會傳送到dbms中執行,strb字串所帶的單引號會把語句的機構破壞,產生很多無法預計的後果。

上面的語句帶了太多的引號,可讀性太差,所以可以稍微改一下。delphi提供了quotedstr函式,該函式返回乙個兩端帶引號的字串,對於原字串中的單引號,函式會把轉換成兩個單引號。sql.text:='insert into table1(a,b) values ('+inttostr(inta)+','+quotedstr(strb)+')'; 但同樣對於帶單引號的問題仍然無法解決。可以看到上面table1還有乙個c欄位是long raw型別的,又要如何賦值呢?

sql引數就是最佳的解決方案了。sql.text:='insert into table1(a,b,c) values (:a,:b,:c)'; :a 和:b就是引數變數,在以後根據需要賦值

這樣既可以靈活的設定各字段所需的值和資料型別,而且sql語句的可讀性得到很大的提高。對於字串變數所帶的單引號、百分比、星號等敏感的字元都可以自動進行轉換。

delphi資料庫開發之資料記錄修改

ado.close ado.sql.clear ado.sql.add update userinfo set 姓名 a,性別 b,年齡 c,學歷 d where id e ado.parameters.parambyname a value trim edit2.text ado.paramete...

SQL資料庫開發基礎

1.mfc odbc資料庫開發技術 1.利用odbc建立資料來源 2.資料庫連線 1 包含標頭檔案 include 2 對資料來源進行操作之前需要定義乙個cdatabase物件,如下 cdatabase m db 3 呼叫cdatabase的成員函式openex建立和資料來源的連線,如下 try c...

資料庫SQL開發規範

1 mysql中,varchar n 中的n代表的是字元數,而不是位元組數。例如varchar 255 表示可以儲存255的中文 2 過大的長度會消耗更多的記憶體。varchar n 儲存時是按照資料實際長度儲存的。當把資料讀入到記憶體時,為了提高效率,是按照n的長度分配記憶體的。3 盡可能將所有列...