我正在尝试从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?
答案 0 :(得分:1)
避免使用ObjectProxy
,但要更明确地了解您所选择的内容。例如,请改为编写您的查询:
SELECT * FROM mytable
SELECT NameOfColumn1, NameOfColumn2, ... FROM mytable
可能选择的列数多于您期望的2列(如果您的表有更多列,则会选择所有列)。因此,铸件正在破裂。