2

ac# Unity スクリプトで ODBC を使用して、.xsl ファイル内のデータにアクセスしています。接続は機能し、ファイルからデータを取得できますが、メタデータに問題があります。GetSchema(string) 関数を呼び出すと、スタック オーバーフローが発生するまで無限の再帰呼び出しでスタックします。この問題は、取得しようとする特定のスキーマに関係なく発生します。

私が使用しているコードは次のとおりです。

string connectionString = "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq=" + file + ";UNICODESQL=1;Unicode=yes;";

OdbcConnection dbCon = null;
OdbcDataReader dbData = null;

try
{
  dbCon = new OdbcConnection(connectionString);
  Debug.Log(connectionString);

  dbCon.Open();

  DataTable sheets = dbCon.GetSchema(OdbcMetaDataCollectionNames.Tables);
  foreach(DataRow sheet in sheets.Rows)
  {
    string sheetName = sheet["TABLE_NAME"].ToString().Trim('\'').TrimEnd('$');    
    OdbcCommand dbCommand = new OdbcCommand("SELECT * FROM [" + sheetName + "$]", dbCon);
    DataTable data = new DataTable(sheetName);
    dbData = dbCommand.ExecuteReader();
    data.Load(dbData);
  }
}
catch (Exception ex)
{
  if (ex != null)
  {
    Debug.LogError(ex.Message);
    Debug.LogError(ex.StackTrace);
  }
  else
    Debug.LogError("Exception raise loading '" + file + "'");
}
finally
{
  if (dbData != null)
    dbData.Close();

  if (dbCon != null)
    dbCon.Close();
}

}

4

1 に答える 1