Как показать заголовки столбцов и данные при извлечении данных из AS400
Позвольте мне начать с того, что я являюсь администратором баз данных, а не программистом, но передо мной была поставлена задача создать консольное приложение, которое может извлекать данные из нашего 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 ответ
Я понял. Для захвата заголовков столбцов я использовал 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());
}
}
}