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();
}
}