用C++写入外部变量:string sql = "insert into插入sqlite 数据库中为什么只有一个字符?

代码见图片,问题:
给函数传入两个值add("123","nihao"),数据库表中插入的数据为什么只有一个字符,分别为:1和n

这应该是数据表字段类型宽度问题,图中应该是使用Navicat软件连接的数据库,这里以Navicat软件为例,查看数据表字段设置,存储字符串字段一般使用varchar不定长字段。

① 使用Navicat连接数据库,找到对应数据表选中右键选择“设计表”。

② 找到对应字段,修改字段类型跟长度

扩展:char与varchar

在数据库中,`char`和`varchar`是两种常见的数据类型,它们都可以用来存储字符串类型的数据。`char`和`varchar`的主要区别在于它们的存储方式和大小限制。

`char`是定长字符串类型,它的长度是固定的,通常为1到255个字符。`char`数据在存储时会按照指定的长度进行填充,不足的字符会被填充空格。例如,如果一个`char`字段被定义为长度为10,那么它的存储空间会被预留为10个字符,不足的字符会被填充空格。如果长度过长,则会被截断。

`varchar`是变长字符串类型,它的长度是可变的,通常为0到65535个字符。`varchar`数据在存储时只会占用实际需要的空间,不会像`char`一样进行填充。例如,如果一个`varchar`字段被定义为长度为10,那么如果它的实际长度小于10,那么它的存储空间将会按照实际长度进行分配。

在选择使用`char`还是`varchar`时,需要根据实际情况进行选择。如果字符串的长度通常不会超过某个固定的值,那么可以使用`char`。如果字符串的长度可能会超过某个固定的值,那么可以使用`varchar`,以节省存储空间。

**有帮助到的话,麻烦采纳哦!**

追问

数据库本身没有问题,手动添加数据是可以添加进去的,就是程序只能添加一个字符

追答

建议打开数据的sql执行日志,看C++程序最终提交执行的sql语句。判断是执行sql语句问题,还是数据库问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-10-14
大概率是你字符集是宽字符的类型。在VC中编程用char类型是非常危险的,宽字符字符集用两个char表示一个字符,用char类型都是错误的
你需要用TCHAR类型,找本VC技术内幕之类的数看看吧。在VC里有很多和普通C++不一样的东西,不看直接写是很危险的追问

TCHAR具体怎么用?

追答

这个有的复杂,所以我才建议你去买书看看,你恐怕连宽字符集是啥都不知道,所以解释起来会比较困难

追问

可以举个实例看看吗

追答

你用VC创建一个普通的MDI或者SDI工程可以看到一堆例子,我手头没有例子

追问

谢谢您

相似回答