gpt4 book ai didi

c++ - 长度超过 255 字节的字符串可以用作 ODBC 准备语句参数值吗?

转载 作者:行者123 更新时间:2023-11-29 05:43:09 27 4
gpt4 key购买 nike

我正在使用 C++ 的 libodbc++ ODBC 包装器,其设计类似于 JDBC。我有一个准备好的语句 "INSERT INTO t1 (col1) VALUES (?)",其中 t1.col1 定义为 VARCHAR(500) .

当我调用 statement->setString(1, s) 时,s 的值被截断为 255。我怀疑是 libodbc++ 库,但由于我对 ODBC 不是很熟悉,所以我想确保包装器不只是公开对底层 ODBC 的限制。 ODBC API 引用太复杂,无法快速浏览,坦率地说,我真的不想那样做,所以请原谅我问一个基本问题。

注意:通过同一个库的未准备和未参数化的 insert 语句会插入一个 long 值 ok,因此这不是 MySql 数据库的问题。

最佳答案

对于长字符串,使用 PreparedStatement::setAsciiStream() 而不是 PreparedStatement::setString()

但是在使用流时,我经常遇到错误“HY104 Invalid Precision Value”,这很烦人,因为我不知道如何正面解决它,但是我通过以下步骤解决了这个问题:

1、对SQL语句中的列进行排序,非流列在前;

2,如果这不起作用,将语句拆分为多个语句,更新或查询每个语句的单个列。

但是(再次),为了先插入一行,然后以流方式更新一些列,可能必须获得最后插入的 id,结果证明这是另一个挑战,我再次未能正面解决现在……

关于c++ - 长度超过 255 字节的字符串可以用作 ODBC 准备语句参数值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com