当前位置: 首页 > 知识库问答 >
问题:

在准备好的语句中将负Java长转换为clickhouse Uint64

荆乐
2023-03-14

在插入之前,有没有办法将负长转换为Uint64(clickhouse数据类型)。暂时的

preparedStatement.setObject(columnNumber, -3108819769473315784);
preparedStatement.execute();

引发以下异常

ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 321, host:
localhost, port: 33493; Code: 321, e.displayText() = DB::Exception: Expression returns value
NULL, that is out of range of type UInt64, at: -3108819769473315784

我明白为什么clickhouse会抱怨。你能给我提出解决这个问题的办法吗?是否可以将这个负长转换为其他类型的对象?提前谢谢你。

共有1个答案

东博瀚
2023-03-14

从Java 8开始,您可以使用long.TounsignedString(values):

preparedStatement.setObject(columnNumber, Long.toUnsignedString( -3108819769473315784));
 类似资料:
  • 问题内容: 我刚刚开始做我的第一个项目(很有趣)。我正在学习PHP和MySQL,并且已经完成了我的第一个正常工作的应用程序。它可以工作,但是我现在正在学习如何保护应用程序的安全,从而防止SQL注入。我大约有50多个PHP文件来管理与MySQL数据库的交互。它们看起来都是这样的: 这是我在整个应用程序中用于向数据库读写数据的格式。如果我需要将它们更改为准备好的语句,而不是在其中插入任何信息,而只是在

  • 问题内容: 我一直在阅读有关SQL注入的文章,并决定修改我的代码以防止SQL注入。 例如,我有一个输入,将值插入到数据库中。最初,我的预防注射措施是: 在我读过的文章中,有人建议应该使用准备好的语句。我已经更改了代码并使用了它: 尽管这可以防止SQL注入,但是它对XSS并没有任何作用。因此,我决定修改(removed )并使用它来防止脚本注入。 现在,我的问题是关于使用准备好的语句。我将插入三个项

  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?

  • 我正在寻找一种用Java转义MySQL查询的字符串的方法。 但等一下,在你们中的一些人直接下结论说“事先准备好的声明”之前,我想再解释一下。

  • 我正在使用JDBC执行Oracle语句,如下所示: 我在Java找到了几种称呼上面的声明的方法,主要是: > 使用OraclePreparedStatement: 使用CallableStatement: > 方法#2抛出“SQLException:Not all return parameters registered”,但是,如果我将SQL语句包装为“begin..end;”-那么方法2就很好