欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言中通过sprintf()函数构造sql语句

程序员文章站 2022-03-09 10:36:06
...

一、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结构如下:
C语言中通过sprintf()函数构造sql语句

但是组成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 无输出
% 字符
相关标签: SQL