1

在这种情况下,Visual Studio 设计器会生成一个将参数作为 int 的方法,即使相应的数据库列指定为 System.Int64。

这是“TableAdapter 查询配置向导”中指定的查询:

SELECT *
FROM my_table
WHERE "status_id" = ?

同样,status_id 的类型为 System.Int64。这是设计师生成的:

public virtual DataSet1.MyDataTable GetDataByStatusId(int status_id) { ... }

为什么参数不是 Int64?这是 Visual Studio 中的错误吗?(我使用的是 2008 SP1。)我最终可能只是手动使用 OdbcCommand 类。

编辑:我使用的是 PostgreSQL,并且该列被指定为 bigint 类型。

4

3 回答 3

2

好吧,我想通了。Visual Studio 应该足够聪明,可以使参数变长(Int64),但这里是手动设置它的方法:

在 Visual Studio 数据集设计器中,选择“添加查询”向导生成的方法,例如“FillByStatusId,GetDataByStatusId(status_id)”项。在属性窗口中,找到“参数”行并选择“...”这将允许您手动将“DbType”设置为 Int64(或其他),从而解决了我的问题。

于 2009-06-30T21:17:38.367 回答
0

数据库类型是否长?如果您在 MS Access 中有自动编号类型(相当于 long (int64)),则设计人员将创建 int64 ......另外,您使用的是什么数据库?

编辑:使用 bigint 数据类型,您应该能够使用最多 9223372036854775807... 的数字,以及最多 2147483647 的 int32。换句话说,您使用的 PostgreSQL 等效于 int64,它可以接受任何 int 9223372036854775807. int32 有效,因为该数字在该范围内始终有效。在 .Net 中,您可以在许多数字数据类型之间进行隐式转换。例如,将一个 int 乘以 1.0,它将变成一个 double。无需显式转换或转换。但是,您不能在没有数据丢失的情况下投射另一个方向。

于 2009-06-30T00:01:10.880 回答
0

已经很久了,但今天这个错误似乎仍然存在。使用 MySql (Maria) DB,uint 数据类型被解释为 int,并且必须手动更改。

于 2019-11-13T07:56:54.893 回答