我编写了连接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;
}
}
我想从数据库中获取所有行
答案 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);
...