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 *
的输出。它应适用于所有表格。
答案 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
。