第一条数据行跳过

时间:2019-06-27 14:43:17

标签: c# oledb netezza

我编写了连接NETEZZA数据库的代码。收到响应后,结果的第一行消失,即仅显示10行中的9行。我读到OLEDB驱动程序存在此类问题,但我自己无法解决问题。

我尝试添加参数HDR = YES

class SQL_zapros
{
        private string connString = "Provider=NZOLEDB;Password=PASSWORD; User ID=LOGIN; Data Source=127.0.0.1; Initial Catalog=SYSTEM; Persist Security Info=True;";
        public string sqlcomm = "";


        public DataTable exeReader(string cmd, OleDbParameter[] param)
        {
            OleDbConnection oConn = new OleDbConnection(connString);
            OleDbCommand oCmd;
            OleDbDataReader oReader;
            DataTable AppData = new DataTable();
            oConn.Open();
            oCmd = oConn.CreateCommand();
            oCmd.CommandText = cmd;

            try
            {
                oReader = oCmd.ExecuteReader();
                if (oReader.Read())
                {
                    AppData.Load(oReader);
                    oReader.Close();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            oConn.Close();
            return AppData;
        }
    }

我想从数据库中获取所有行

2 个答案:

答案 0 :(得分:2)

in读取结果的第一行。 oReader.Read()也会这样做,结果的第一行将被忽略。要解决此问题,请删除AppData.Load块,只需直接将阅读器传递给

在创建类型实现if的实例时,也使用using块。这样可以确保即使在发生异常的情况下也始终可以释放资源。

IDisposable

答案 1 :(得分:0)

我建议改用OleDbDataAdapter。试试:

...  
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand(cmd, oConn);
    adapter.Fill(AppData);    
...