gpt4 book ai didi

.net - 将数据类型 bigint 转换为 int [SQL Server] 时出错

转载 作者:行者123 更新时间:2023-12-04 12:13:54 27 4
gpt4 key购买 nike

我必须使用存储过程将电话号码插入数据库中..但在插入时显示错误为

SqlException: Error converting data type bigint to int.


long phoneNumber = Convert.ToInt64(Phone.Text);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@phone",phoneNumber);

cmd.ExecuteNonQuery();

即对于这个参数,
DBType 是 Int64
SQLDbType 是 BigInt

我也使用 BigInt 作为 SQL Server 中列的 DataType。

那么这里可能出了什么问题..

我发现 1999999999 [<2^32] 被正确插入而 2999999999 [>2^32] 不是

请告诉您是否需要更多信息

提前致谢

最佳答案

看到这个 int, bigint, smallint, and tinyint

bigint
Integer (whole number) data from -2^63 (-9,223,372,036,854,775,808) through 2^63-1 (9,223,372,036,854,775,807). Storage size is 8 bytes.

int
Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647). Storage size is 4 bytes. The SQL-92 synonym for int is integer.



OP 说:

I find that 1999999999 [<2^32 ]is getting inserted properly and 2999999999 [>2^32]is not


1,999,999,999 适合 int 因为它小于 2,147,483,6472,999,999,999 不适合,因为它大于 2,147,483,647

最好的办法是使用 varchar(10) 来存储电话号码。如果您担心在字符串中获取数字以外的字符,您可以这样验证:

你可以像这样验证你的字符串:
declare @PhoneNumber varchar(10)
select @PhoneNumber='123e0'
if @PhoneNumber LIKE '%[^0-9]%'
print 'NOT NUMERIC'
else
print 'NUMERIC'

select @PhoneNumber='1234567890'
if @PhoneNumber LIKE '%[^0-9]%'
print 'NOT NUMERIC'
else
print 'NUMERIC'

这是运行上述内容时得到的结果:
NOT NUMERIC
NUMERIC

关于.net - 将数据类型 bigint 转换为 int [SQL Server] 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5297766/

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