C# 无法将DataTable与读卡器或适配器与Mono和Unity3D一起使用

C# 无法将DataTable与读卡器或适配器与Mono和Unity3D一起使用,c#,unity3d,mono,C#,Unity3d,Mono,经过几次尝试,我终于设法将数据库访问与System.Data.Odbc结合使用 我知道连接和查询是有效的,因为我可以这样做: cmd = new OdbcCommand(req); cmd.Connection = accessConnection; OdbcDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Debug.Log("test: "+reader[0]); // This works fine

经过几次尝试,我终于设法将数据库访问与System.Data.Odbc结合使用

我知道连接和查询是有效的,因为我可以这样做:

cmd = new OdbcCommand(req);
cmd.Connection = accessConnection;

OdbcDataReader reader = cmd.ExecuteReader();
while (reader.Read()) {
    Debug.Log("test: "+reader[0]); // This works fine
}
但当我尝试使用DataTable时,它确实崩溃得很厉害

我试过:

cmd = new OdbcCommand(req);
cmd.Connection = accessConnection;

OdbcDataReader reader = cmd.ExecuteReader();

output = new DataTable();
output.Load(reader); // This line crash somehow
reader.Close();
以下是我捕获的异常详细信息:

TargetSite: Int32 GetColumnAttribute(Int32, FieldIdentifier)

Source: System.Data

Message: Object reference not set to an instance of an object

StackTrace:   at System.Data.Odbc.OdbcDataReader.GetColumnAttribute (Int32 column, FieldIdentifier fieldId) [0x00000] in <filename unknown>:0 
  at System.Data.Odbc.OdbcDataReader.GetSchemaTable () [0x00000] in <filename unknown>:0 
  at System.Data.Common.DataAdapter.BuildSchema (IDataReader reader, System.Data.DataTable table, SchemaType schemaType, MissingSchemaAction missingSchAction, MissingMappingAction missingMapAction, System.Data.Common.DataTableMappingCollection dtMapping) [0x00000] in <filename unknown>:0 
  at System.Data.DataTable.Load (IDataReader reader, LoadOption loadOption) [0x00000] in <filename unknown>:0 
  at System.Data.DataTable.Load (IDataReader reader) [0x00000] in <filename unknown>:0 
  at DataBase.Execute (System.String req) [0x00063] in D:\Unity Project\Assets\DataBase.cs:131 
UnityEngine.Debug:LogError(Object)
DataBase:Execute(String) (at Assets/DataBase.cs:150)
ModelHandler:Start() (at Assets/ModelHandler.cs:34)
有人有办法解决这个问题吗


作为参考,我还尝试使用OdbcDataAdapter,使用Fill方法,我缓存了同样的问题。

Related:嗯,这很有趣。不幸的是,当我测试我的所有对象时,它们都不是空的,错误是由我没有在System.Data中编写的代码引发的,我无法理解为什么会出现此错误,但我确实了解存在空引用问题,我只知道如何在特定场景中防止它。我遇到了完全相同的问题。看看我的问题/答案:不幸的是,我使用Access数据库,而不是Excel工作表。