Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带无符号整数的Java预处理语句的正确方法_Java_Mysql_Jdbc_Prepared Statement_Unsigned Integer - Fatal编程技术网

使用带无符号整数的Java预处理语句的正确方法

使用带无符号整数的Java预处理语句的正确方法,java,mysql,jdbc,prepared-statement,unsigned-integer,Java,Mysql,Jdbc,Prepared Statement,Unsigned Integer,我的表中有一个外键列,其中包含一个无符号整数值。我想在此列中添加一个新值,但我不知道java将如何处理此无符号值,因为java没有本机无符号值 如果我这样做: preparedStatement.setInt(2, myInt); 数据库是否会自动将此signed int转换为其unsigned值?或者它会抛出一个错误,说这些是不兼容的类型?我是否应该站起来使用long,比如: preparedStatement.setLong(2, myLong); 或者这也会引发异常,因为数据库没有使用

我的表中有一个外键列,其中包含一个
无符号整数
值。我想在此列中添加一个新值,但我不知道java将如何处理此
无符号
值,因为java没有本机无符号值

如果我这样做:

preparedStatement.setInt(2, myInt);
数据库是否会自动将此
signed int
转换为其
unsigned
值?或者它会抛出一个错误,说这些是不兼容的类型?我是否应该站起来使用
long
,比如:

preparedStatement.setLong(2, myLong);
或者这也会引发异常,因为数据库没有使用
BIGINT

我正在使用MySQL,我只是想避免将来随着表记录的增长而出现意外

也许MySQL的行为方式和SQL Server的行为方式不同

撇开SQL Server没有无符号整数这一事实不谈,您的直觉是正确的⇄ 未签名行为很可能取决于所使用的特定JDBC驱动程序的实现。因此,您寻求的一般答案实际上“过于宽泛”,因为它可能需要描述其数据库支持无符号整数列的所有JDBC驱动程序的特定于实现的详细信息

因此,正如在对问题的评论中所建议的,MySQL(或任何其他特定JDBC驱动程序)的最佳选择是

  • 查看JDBC规范本身是否定义了所需的行为(不太可能)
  • 查看JDBC驱动程序文档以获得最终答案,或者
  • 测试您想要的配置,看看它的行为是否符合您的需要
  • 也许MySQL的行为方式和SQL Server的行为方式不同

    撇开SQL Server没有无符号整数这一事实不谈,您的直觉是正确的⇄ 未签名行为很可能取决于所使用的特定JDBC驱动程序的实现。因此,您寻求的一般答案实际上“过于宽泛”,因为它可能需要描述其数据库支持无符号整数列的所有JDBC驱动程序的特定于实现的详细信息

    因此,正如在对问题的评论中所建议的,MySQL(或任何其他特定JDBC驱动程序)的最佳选择是

  • 查看JDBC规范本身是否定义了所需的行为(不太可能)
  • 查看JDBC驱动程序文档以获得最终答案,或者
  • 测试您想要的配置,看看它的行为是否符合您的需要

  • 您是否尝试过实现这两种方法并看到了结果?:)我想了一下,但我先用谷歌搜索了一下,但没有找到任何相关信息,所以我认为如果这个答案有适当的文档记录,会更有用,这样可以节省未来人们的时间。@mFeinstein我同意这一点!不禁止创建问题并回答它。因此,您可以尝试创建与测试匹配的问题;-)(如果失败,创建一个问题,询问原因并回答,因为它不支持示例和来源,当然,如果找不到其他帖子的话…)好吧,我可以创建问题,测试它,然后回答它,但这是一个在我设置测试的方式上碰巧对我起作用的一个案例场景。。。我不是这方面的专家,可能有一些陷阱需要避免,可能MySQL的行为方式是一种,SQL Server的行为方式是另一种,我不知道,这就是我来这里的原因,所以专家可以向我展示我肯定会错过的所有细节。可能重复的是,您是否尝试实现这两种方法并看到了发生的情况?:)我想了一下,但我先用谷歌搜索了一下,但没有找到任何相关信息,所以我认为如果这个答案有适当的文档记录,会更有用,这样可以节省未来人们的时间。@mFeinstein我同意这一点!不禁止创建问题并回答它。因此,您可以尝试创建与测试匹配的问题;-)(如果失败,创建一个问题,询问原因并回答,因为它不支持示例和来源,当然,如果找不到其他帖子的话…)好吧,我可以创建问题,测试它,然后回答它,但这是一个在我设置测试的方式上碰巧对我起作用的一个案例场景。。。我不是这方面的专家,可能有一些陷阱需要避免,可能MySQL的行为方式是一种,SQL Server的行为方式是另一种,我不知道,这就是我来这里的原因,所以专家可以向我展示我肯定会错过的所有细节。See的可能重复,这就是我想要专家意见的原因。。。现在我了解到事情并不像我想的那么简单,如果我自己测试这个,我可以得出结论,测试行为将永远是正确的,即使在我将来使用的其他数据库上。。。现在我知道我每次都要小心,这就是为什么我需要专家的意见。。。现在我了解到事情并不像我想的那么简单,如果我自己测试这个,我可以得出结论,测试行为将永远是正确的,即使在我将来使用的其他数据库上。。。现在我知道我每次都要小心