C語言中通過sprintf()函式構造sql語句
阿新 • • 發佈:2019-02-15
一、C語言如何構造sql
做專案時,由嵌入式開發慢慢涉及到後臺開發,接觸資料庫慢慢就多了,一般情況下,sql
定義成一個char *
,或者一個字元陣列,裡面就寫sql語句就行了。例如:
char *sql;
sql = "create table job_table(" \
"task_id int primary key not NULL," \
"point_tag int not NULL," \
"task_serial int," \
"device_tag int);" ;
表job_table
結構如下:
但是組成sql
插入變數該怎麼辦呢?
- 使用strcat將兩個char型別連結
- sprintf()函式構造sql語句
第一種方式比較麻煩,還要將變數進行類系轉換,記錄下第二種方式
虛擬碼:
char* insertJob;
char sql[255];
int a=1;
int b=1;
int c=1;
int d=1;
insertJob = "INSERT INTO job_table (task_id,point_tag,task_serial,device_tag) VALUES (" ;
sprintf(sql,"%s%d%s%d%s%d%s%d%s",
insertJob,
a,
",",
b,
",",
c,
",",
d,
")");
二、sprintf()函式
int sprintf(char *str, const char *format, ...)
- 傳送格式化輸出到 str 所指向的字串。
str
– 這是指向一個字元陣列的指標,該陣列儲存了字串。format
– 這是字串,包含了要被寫入到字串str
的文字。它可以包含嵌入的format
標籤,format
標籤可被隨後的附加引數中指定的值替換,並按需求進行格式化。format
標籤屬性是%[flags][width][.precision][length]specifier
- 如果成功,則返回寫入的字元總數,不包括字串追加在字串末尾的空字元。如果失敗,則返回一個負數。
format
中的specifier
則是最為常用與關注的
specifier(說明符) | 輸出 |
---|---|
c | 字元 |
d或i | 有符號十進位制整數 |
e | 使用 e 字元的科學科學記數法(尾數和指數) |
E | 使用 E 字元的科學科學記數法(尾數和指數) |
f | 十進位制浮點數 |
g | 自動選擇 %e 或 %f 中合適的表示法 |
G | 自動選擇 %E 或 %f 中合適的表示法 |
o | 有符號八進位制 |
s | 字串 |
u | 無符號十進位制整數 |
x | 無符號十六進位制整數 |
X | 無符號十六進位制整數(大寫字母) |
p | 指標地址 |
n | 無輸出 |
% | 字元 |