InvalidCastException:无法从源类型转换为目标类型。源码

时间:2017-05-20 18:41:02

标签: c# sqlite unity3d

我正在尝试从sqlite表中获取数据并将其与unity一起使用。 这是我的代码

string conn = "URI=file:DB.db"; //Path to database.
    IDbConnection dbconn;
    dbconn = (IDbConnection)new SqliteConnection(conn);
    try
    {
        dbconn.Open(); //Open connection to the database.

    }
    catch (Exception ex)
    {
        throw ex;
    }

    IDbCommand dbcmd = dbconn.CreateCommand();
    string sqlQuery = "SELECT * FROM mytable WHERE id =" + LevelID + "";
    dbcmd.CommandText = sqlQuery;
    IDataReader reader = null;
    reader = dbcmd.ExecuteReader();

    if (reader != null)
    {
        while (reader.Read())
        {
           string question = reader.GetString(0);
           string cat = reader.GetString(1);
         }
      }

我得到的例外:

InvalidCastException: Cannot cast from source type to destination type.
Mono.Data.Sqlite.SqliteDataReader.VerifyType (Int32 i, DbType typ)
Mono.Data.Sqlite.SqliteDataReader.GetString (Int32 i)

我检查了数据库,字段是“TEXT”,存储在其中的数据是一个字符串,我正在声明字符串,那为什么它说它是Int?

1 个答案:

答案 0 :(得分:1)

避免使用ObjectProxy,但要更明确地了解您所选择的内容。例如,请改为编写您的查询:

SELECT * FROM mytable

SELECT NameOfColumn1, NameOfColumn2, ... FROM mytable 可能选择的列数多于您期望的2列(如果您的表有更多列,则会选择所有列)。因此,铸件正在破裂。