数据表table [0]错误“使用JOIN时无法找到表0”

时间:2016-03-24 19:03:32

标签: c# oracle datagrid system.data

我知道之前已经问了很多这个问题,但在这种情况下,我认为这与在查询中使用SELECT有关,因为我使用简单的{{1运行完全相同的代码语句和它总是返回一个表,并且我已经检查了sqlplus命令行中的JOIN查询并且总是有结果,所以它不是查询本身的问题

方法是:

        public static DataView method()
    {
        DBConnection db = new DBConnection();
        db.Connect();

        db.SetSql("select column1, column2, column3 from table1 natural join table2");

        DataSet result = db.RetrieveRecords();

        DataView source = new DataView(result.Tables[0]);

        db.Dispose();

        return source;
    }

我使用相同的方法在应用程序中填充不同的数据网格,唯一的区别是db.SetSql中的查询,即select column1, column2 from table1。该数据网格总是很好地填充,即使查询结果是0行,它只显示网格为空并且不会抛出错误。

就像我说的那样,JOIN查询在命令行中给出了结果,但是当我运行我的应用程序时,在DataView source = new DataView(result.Tables[0]);

是否可能类似于使用JOIN时结果不被视为表格?

DBConnection.RetrieveRecords()的代码:

public DataSet RetrieveRecords()
    {
        OracleDataAdapter DataAdapter = null;
        DataSet result = new DataSet();
        try
        {
            command.Connection = connection;   //command is OracleCommand and connection is OracleConnection
            DataAdapter = new OracleDataAdapter(command);
            DataAdapter.Fill(result);
        }
        catch (Exception )
        {
            autoDisconnect = true;
            throw new Exception(ex.ToString());
        }
        //Cleaning
        finally
        {
            if (command.Parameters.Count > 0)
            {
                foreach (OracleParameter pram in command.Parameters)
                {
                    pram.Dispose();
                }
            }
            if (command != null)
            {
                command.Dispose();
            }
            if (DataAdapter != null)
            {
                DataAdapter.Dispose();
            }
            if (autoDisconnect)
            {
                Dispose();
            }
        }
        return result;
    }

DBConnection.SetSql()(如果重要的话):

    public void SetSql(string sql)
    {
        command = new OracleCommand(sql);
        command.BindByName = true;
    }

0 个答案:

没有答案