记录一次char格式查询问题

记录一次Char(8)导致的查询失败问题

数据库记录时间用的格式是char

首先日期是6位长度202002精确到月份,但是char的长度是8位自动补全空格,在用Mybatis查询数据时#{dataTime}时数据查询不出,拿出日志执行SQL去数据库执行是没有问题,替换为 d a t a T i m e 可 以 查 询 出 数 据 。 考 虑 到 S Q L 注 入 的 问 题 不 能 用 {dataTime}可以查询出数据。考虑到SQL注入的问题不能用 dataTimeSQL

找不出问题所在

在把dataTime = #{dataTime} 替换为trim(dataTime) = #{dataTime} 可以了
总结:在数据库建表时,Oracle建议使用varchar2动态,mysql使用varchar,因为char规定长度后会有空格占位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,可以使用动态内存分配和结构体数组来一次性接收数据库查询返回的多条记录。以下是一种实现方法: 首先,定义一个结构体来表示数据库查询记录的结构,比如: ```c struct Record { int id; char name[20]; int age; }; ``` 然后,声明一个结构体数组指针以及一个变量来存储记录的数量,例如: ```c struct Record *records; int numRecords; ``` 接下来,执行数据库查询操作,并获取到记录的数量,例如: ```c // 假设从数据库中获取到numRecords的值 // 动态分配足够的内存来存储多条记录 records = (struct Record*)malloc(numRecords * sizeof(struct Record)); // 检查内存分配是否成功 if (records == NULL) { printf("内存分配失败\n"); return; } // 循环接收每条记录的字段值 for (int i = 0; i < numRecords; i++) { // 假设从数据库中获取到id、name和age字段的值 int id = ...; char name[20] = ...; int age = ...; // 将获取到的字段值存储到结构体数组中 records[i].id = id; strncpy(records[i].name, name, sizeof(records[i].name)); records[i].age = age; } ``` 完成数据库查询后,就可以通过指针遍历结构体数组并访问每条记录的字段值。 最后,记得在不再需要使用结构体数组时,使用`free()`函数释放动态分配的内存,以避免内存泄漏: ```c free(records); ``` 这样,就可以使用动态内存分配和结构体数组一次性接收数据库查询返回的多条记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值