1

テーブルからいくつかのデータを取得しようとしていますが、「無効なオブジェクト名 'h'」というエラーが表示されます。私のコードは

 Dim h As Decimal
'some code
 cmd2 = New SqlCommand("insert into h select KvotaX from dbo.Utakmice where ID=@s1 ", conn)


 cmd2.Parameters.AddWithValue("@s1", myReader.GetInt32(1))
'some code
 f = cmd2.ExecuteNonQuery()

何が間違っているのかわかりません。dbo.Utakmice の KvotaX データ型は実数です。

4

2 に答える 2

2

SQL ステートメントを使用して h の値を設定しようとしました。これは正しくありません。

Dim h As Decimal
cmd2 = New SqlCommand("select KvotaX from dbo.Utakmice where ID=@s1 ", conn)
cmd2.Parameters.AddWithValue("@s1", myReader.GetInt32(1))
h = Convert.ToDecimal(cmd2.ExecuteScalar)

select渡されたパラメーターに対応するレコードを取得し、ExecuteScalar メソッドの戻り値を読み取ります。これは、クエリが 1 つのレコードと 1 つの列のみを返す場合にのみ機能することに注意してください。10 進数に代入する前に戻り値を安全に確認することをお勧めします

Dim o = cmd2.ExecuteScalar
if o IsNot Nothing Then
    h = Convert.ToDecimal(o)
    .....
End If

ただし、コードは、開いている MySqlDataReader から読み取る s1 パラメーターの値を取得しようとしているという事実を示唆しています。通常、データリーダーが使用する接続は、データリーダーが開いたままになるまでビジーであるため、これは不可能です。

于 2013-06-10T13:57:31.153 に答える
0

データを取得insert into hしようとしているだけなら、必要ないと思います。

そのフレーズを削除して、期待どおりの結果が得られるかどうかを確認してください。

于 2013-06-10T13:57:35.120 に答える