2012-04-05 11 views
0

テーブルからいくつかのレコードを選択しようとしているときに、このエラーメッセージが表示されます。Visual basic/sql - 型をキ​​ャストできません

私の心は今撮影されています。 アイデア?ありがとう!

myreaderは、

Public myReader As SqlCeDataReader 
Dim currentMatch(1) As String 

cmd.CommandText = "SELECT schoolid,opponent " & _ 
        "FROM TEAM_SCHEDULE WHERE seasonid = " & i & _ 
        " AND gameid = " & 1 & " ORDER BY id" 
myReader = cmd.ExecuteReader() 
Do While myReader.Read() 
    currentMatch(0) = myReader.GetString(0) 
    currentMatch(1) = myReader.GetString(1) 
Loop 

error

+1

連結SQLを選択してデータテーブルの結果を照会することができますされている方法は、HTTP([SQLインジェクション]にあなたを公開します://en.wikipedia.org/wiki/SQL_injection)。 – Oded

答えて

3

推測されます。

schoolidINTのように定義されていますが、何らかの理由で、あなたはそれを取得するためにGetString代わりのGetInt32を使用しています。

Do While myReader.Read() 
    currentMatch(0) = myReader.GetInt32(0).ToString() 
    currentMatch(1) = myReader.GetString(1) 
Loop 
+0

seasonid&gameidのデータ型は何ですか? – larryr

+0

@larryr - なぜそれは重要ですか?私は彼らがSQLの「INT」であり、クエリが失敗しないという事実も前提としています。 – Oded

+0

ありがとう、なぜ私は文字列を使用したかわからない。 – Meowbits

0

なぜdatatableを使用しないのですか?

Public myReader As SqlCeDataReader 
Dim currentMatch(1) As String 

cmd.CommandText = "SELECT schoolid,opponent " & _ 
       "FROM TEAM_SCHEDULE WHERE seasonid = " & i & _ 
       " AND gameid = " & 1 & " ORDER BY id" 
Dim dt as new DataTable 

dt.load(cmd.ExecuteReader()) 

したい場合は、LINQ

dim QueryResults = from p as datarow in dt.rows where p.seasonid<10 select p 

またはリスト

dim MyObjList = (from p as datarow in dt.rows select seasonid = p.seasonid, gameid = p.gameid).ToList 
関連する問題