2012-04-05 61 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你的方式向你揭示[SQL注入](HTTP ://en.wikipedia.org/wiki/SQL_injection)。 – Oded 2012-04-05 19:04:59

回答

3

猜測:

schoolid被定義爲INT,但出於某種原因,你正在使用的不是GetStringGetInt32去取。

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

seasonid和gameid的數據類型是什麼? – larryr 2012-04-05 19:06:54

+0

@larryr - 爲什麼這很重要?我假設他們也是來自SQL發佈的「INT」,並且查詢不會失敗。 – Oded 2012-04-05 19:08:00

+0

謝謝,不知道爲什麼我使用了字符串。 – Meowbits 2012-04-05 19:52:18

0

爲什麼不使用數據表?

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()) 

如果你願意,你可以查詢結果DataTable中使用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 
相關問題