You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by killyu <ki...@foxmail.com> on 2019/03/22 08:53:08 UTC

通过ODBC获取所有可用的表和表元数据

您好,
      我编写C#程序时使用ODBC能成功连接Kylin,但尝试使用以下代码获取表列表时发生错误:
            var odbcConnection = new OdbcConnection(ConnectionString);
            using (odbcConnection)
            {
                odbcConnection.Open();
                var table = odbcConnection.GetSchema("Tables");


                foreach (DataRow tableRow in table.Rows)
                {
                    foreach (var column in tableRow.ItemArray)
                    {
                        Console.Write(column + ", ");
                    }


                    Console.WriteLine();
                }

            }
发生错误的行为var table = odbcConnection.GetSchema("Tables");错误信息为
Arithmetic operation resulted in an overflow.
   at System.Data.Odbc.OdbcDataReader.BuildMetaDataInfo()
   at System.Data.Odbc.OdbcDataReader.GetSchemaTable()
   at System.Data.Odbc.OdbcMetaDataFactory.NewDataTableFromReader(IDataReader reader, Object[]& values, String tableName)
   at System.Data.Odbc.OdbcMetaDataFactory.DataTableFromDataReader(IDataReader reader, String tableName)
   at System.Data.Odbc.OdbcMetaDataFactory.GetTablesCollection(String[] restrictions, OdbcConnection connection, Boolean isTables)
   at System.Data.Odbc.OdbcMetaDataFactory.PrepareCollection(String collectionName, String[] restrictions, DbConnection connection)
   at System.Data.ProviderBase.DbMetaDataFactory.GetSchema(DbConnection connection, String collectionName, String[] restrictions)
   at System.Data.Odbc.OdbcConnection.GetSchema(String collectionName, String[] restrictionValues)
   at KylinConnectTest.Program.Main(String[] args) in C:\vsprojects\temp\Test\MysqlConnectorTest\KylinConnectTest\Program.cs:line 27

而当使用odbcConnection.GetSchema();时能正确运行。
请问这种方式是否可行?或者能否使用其它方式获取所有表信息?

Re: 通过ODBC获取所有可用的表和表元数据

Posted by ShaoFeng Shi <sh...@apache.org>.
Less people know how to debug ODBC; I'm afraid no help can give to you.

Best regards,

Shaofeng Shi 史少锋
Apache Kylin PMC
Email: shaofengshi@apache.org

Apache Kylin FAQ: https://kylin.apache.org/docs/gettingstarted/faq.html
Join Kylin user mail group: user-subscribe@kylin.apache.org
Join Kylin dev mail group: dev-subscribe@kylin.apache.org




killyu <ki...@foxmail.com> 于2019年3月22日周五 下午4:53写道:

> 您好,
>       我编写C#程序时使用ODBC能成功连接Kylin,但尝试使用以下代码获取表列表时发生错误:
>             var odbcConnection = new OdbcConnection(ConnectionString);
>             using (odbcConnection)
>             {
>                 odbcConnection.Open();
>                 var table = odbcConnection.GetSchema("Tables");
>
>
>                 foreach (DataRow tableRow in table.Rows)
>                 {
>                     foreach (var column in tableRow.ItemArray)
>                     {
>                         Console.Write(column + ", ");
>                     }
>
>
>                     Console.WriteLine();
>                 }
>
>             }
> 发生错误的行为var table = odbcConnection.GetSchema("Tables");错误信息为
> Arithmetic operation resulted in an overflow.
>    at System.Data.Odbc.OdbcDataReader.BuildMetaDataInfo()
>    at System.Data.Odbc.OdbcDataReader.GetSchemaTable()
>    at
> System.Data.Odbc.OdbcMetaDataFactory.NewDataTableFromReader(IDataReader
> reader, Object[]& values, String tableName)
>    at
> System.Data.Odbc.OdbcMetaDataFactory.DataTableFromDataReader(IDataReader
> reader, String tableName)
>    at System.Data.Odbc.OdbcMetaDataFactory.GetTablesCollection(String[]
> restrictions, OdbcConnection connection, Boolean isTables)
>    at System.Data.Odbc.OdbcMetaDataFactory.PrepareCollection(String
> collectionName, String[] restrictions, DbConnection connection)
>    at System.Data.ProviderBase.DbMetaDataFactory.GetSchema(DbConnection
> connection, String collectionName, String[] restrictions)
>    at System.Data.Odbc.OdbcConnection.GetSchema(String collectionName,
> String[] restrictionValues)
>    at KylinConnectTest.Program.Main(String[] args) in
> C:\vsprojects\temp\Test\MysqlConnectorTest\KylinConnectTest\Program.cs:line
> 27
>
> 而当使用odbcConnection.GetSchema();时能正确运行。
> 请问这种方式是否可行?或者能否使用其它方式获取所有表信息?