2012-04-05 55 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 
相关问题