C#程序从oracle数据库打印整个表

时间:2018-01-27 06:39:37

标签: c# visual-studio-2015 oracle12c

hr中有很多表。 我想编写一个程序,允许用户输入表名,我必须打印从表到控制台的所有数据。

问题在于,对于所有表格,结构都不同。我的意思是不同的表中有不同的属性。如何打印特定表格中的所有数据?

我写了以下代码。如何打印所有表数据?

using System;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;

namespace Ass1Que1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
               string constr = "DATA SOURCE=localhost:1521/orclpdb;PERSIST SECURITY INFO=True;USER ID=HR;password=hr";
                string table = "";
                OracleConnection con = new OracleConnection(constr);
                con.Open();
                Console.WriteLine("Connected to Oracle Database {0}", con.ServerVersion);
                // con.Dispose();
                Console.Write("Enter the table name: ");
                table = Console.ReadLine();
                OracleCommand cmd = con.CreateCommand();
                cmd.CommandText = "SELECT * FROM " + table;
                OracleDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine("" + reader.GetString(0));
                }
                Console.WriteLine("Press RETURN to exit.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : {0}", ex);
                Console.ReadKey();
            }
        }
    }
}

代码对我来说工作正常,但我只想打印所有数据意味着我想打印Select *的输出。它应适用于所有表格。

1 个答案:

答案 0 :(得分:1)

根据我的评论,这是一个微不足道的例子。请注意,它未经过测试,但该理论基于类似的SqlDataReader。下面的代码段将打印列名称和值(理论上至少):

OracleDataReader reader = cmd.ExecuteReader();
var cols = reader.FieldCount;

while (reader.Read())
{
    for (int i = 0; i < cols; i++)
    {
        Console.WriteLine("{0}: {1}", reader.GetName(i), reader.GetValue(i));
    }
}

你也可以Console.WriteLine("{0}: {1}", reader.GetName(i), reader[i]); - 你可以用SqlDataReader做到这一点,但我不能100%确定OracleDataReader