1

この場合、対応するデータベース列がSystem.Int64として指定されていても、VisualStudioデザイナーはパラメーターをintとして受け取るメソッドを生成します。

これは、「TableAdapterクエリ構成ウィザード」で指定されたクエリです。

SELECT *
FROM my_table
WHERE "status_id" = ?

この場合も、status_idのタイプはSystem.Int64です。これは、デザイナーが生成するものです。

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

パラメータがInt64ではないのはなぜですか?これはVisualStudioのバグですか?(私は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 ...およびint32では最大2147483647の数値を使用できるはずです。つまり、最大でint64を受け入れることができるint64と同等のPostgreSQLを使用しています。 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 に答える