1

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を実行しています

4

1 に答える 1

0

彼らの提案に感謝します。Management Studioは、挿入直後にデータをコミットしないことが判明しました。データをコミットする前に、ツールを閉じる必要があります。これで、データがアプリケーションに表示されます。

于 2012-04-10T18:41:58.823 に答える