Oracle DBから読み取るC#アプリケーションがありますが、アプリケーションにデータがありません。管理ツールから直接同じSELECTステートメントを実行している場合、データは正常に返されます。
static void Selectexample()
{
string connStr = @"Data Source=localhost;user id=system;password=123456";
DbProviderFactory dbFactory= DbProviderFactories.GetFactory("System.Data.OracleClient");
DbConnection con = dbFactory.CreateConnection();
con.ConnectionString = connStr;
string sql;
sql = "SELECT * FROM person";
DbCommand cmd = dbFactory.CreateCommand();
cmd.Connection = con;
cmd.CommandText = sql;
try
{
con.Open();
DbDataReader reader = cmd.ExecuteReader();
string headline = "";
for (int i = 0; i < reader.FieldCount; i++)
{
string s = reader.GetName(i);
headline += s.PadLeft(20) + " | ";
}
Console.WriteLine(headline);
while (reader.Read())
{
string line = "";
string s1 = (string)reader[0];
string s2 = (string)reader[1];
line += ("");
line += s1.PadLeft(20) + " | ";
line += s2.PadLeft(20) + " | ";
Console.WriteLine(line);
}
}
catch (DbException ex)
{
Console.WriteLine("fejl: " + ex.Message);
}
finally
{
con.Close();
}
Console.WriteLine();
Console.WriteLine("---");
}
Personのテーブル定義:
create table person
(
cpr char(10) primary key,
name varchar(25),
job varchar(25),
salary int,
zip char(4),
foreign key (zip) references zipcode(zip)
);
x64Windowsでx86Oracleドライバーを使用して.Net3.0を実行しています