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

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_30650153/article/details/82154083

一、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 无输出
% 字符

猜你喜欢

转载自blog.csdn.net/qq_30650153/article/details/82154083
今日推荐