Как показать заголовки столбцов и данные при извлечении данных из AS400 - PullRequest
0 голосов
/ 03 октября 2018

Позвольте мне начать с того, что я являюсь администратором баз данных, а не программистом, но мне было поручено создать консольное приложение, которое может получать данные из нашего AS400.Я создал соединение ODBC, и мой код ниже возвращает только значения в каждом столбце.Мне также нужно тянуть заголовки столбцов.Прямо сейчас я показываю данные в консоли только для того, чтобы убедиться, что они тянут правильно, но моя конечная цель - сбросить данные в sql.

   var strSQL = "Select acact,actyp,acord,acsts,acnxt from ITSFILE.ACTIONSF fetch first 100 row only";
        OdbcCommand cmd = new OdbcCommand(strSQL, cn);
        OdbcDataReader myDataReader;
        myDataReader = cmd.ExecuteReader();
        while (myDataReader.Read())
        {
            Console.WriteLine(myDataReader["acact"].ToString() + " " + myDataReader["actyp"].ToString() + " " + myDataReader["acord"].ToString() + " " + myDataReader["acsts"].ToString() + " " + myDataReader["acnxt"].ToString());

            Console.ReadLine();
        }
        myDataReader.Close();
        cn.Close();
        }

1 Ответ

0 голосов
/ 03 октября 2018

Я понял это.Для захвата заголовков столбцов я использовал OdbcDataAdapter вместо OdbcDataReader и создал цикл, чтобы сначала получать столбцы, а затем - данные.Это отлично сработало для меня.Пожалуйста, смотрите мой код ниже.

var strSQL = "Select acact,actyp,acord,acsts,acnxt from ITSFILE.ACTIONSF fetch first 
100 row only";
using (OdbcCommand cmd = new OdbcCommand(strSQL))
        {
            using (OdbcDataAdapter sda = new OdbcDataAdapter())
            {
                cmd.Connection = cn;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);

                    string csv = string.Empty;
                    string filepath = @"C:\Test\test.csv";
                    foreach (DataColumn column in dt.Columns)
                    {
                        csv += column.ColumnName + ',';

                    }
                    csv += "\r\n";
                    foreach (DataRow row in dt.Rows)
                    {
                        foreach (DataColumn column in dt.Columns)
                        {
                            csv += row[column.ColumnName].ToString().Replace(",", 
";") + ',';
                        }
                        csv += "\r\n";
                    }
                    File.WriteAllText(filepath, csv.ToString());
                }
            }
        }
...