Hatena::ブログ(Diary)

KATSU System Design blog

KATSU System DesignKATSU System DesignのHPへ

2016-05-03

[]Oracle Client 11.2.0.3 x64 01:00

とある環境で「Oracle Provider for OLE DB」を使用する為「Oracle Client 11.2.0.3 x64」の媒体から、それがインストールされていました。しかし、.NET Framework2.0で操作するプログラムを実行すると「'OraOLEDB.Oracle.1' はローカルコンピュータに登録されていません。」とのエラーが返され、目的のDBに接続する事ができません。
このエラー、経験値では、.NETプログラムが「ANY CPU」でコンパイルされていたり、OSx64で「x32」、またはOSx32で「x64」でコンパイルされていると発生することが多いのですが、今回はそのあたりの矛盾もない状態。推測すると、「Oracle Provider for OLE DB」がOSに正しくレジストされていない様子。
他のPCで「Oracle Client 11.2.0.1 x64」の媒体からインストールされた環境があるのですが、こちらは正常操作。
結局、「Oracle Client 11.2.0.3 x64」ではなく「Oracle Data Access Component(ODAC) 11.2.0.3 x64」を使用し「Oracle Provider for OLE DB」を再インストールしたところ、正常に動作すように鳴りました。Oracleのサポートに持ち込んだ訳ではないので、断言は出来ませんが、現象からすると「Oracle Client 11.2.0.3 x64」のインストーラーに問題があるようです。

2015-03-29

[]やっぱ、WPF かな...? 21:34

.NETでWindowsデスクトップアプリと言えば、WindowsForm だった訳ですが、ここ数日、Windowsデスクトップアプリでの、Entity FrameworkやLinq to Entityあたりを調べてたら、やっぱりもう、WindowsForm ではなく、Windows Presentation Foundation(WPF)だろうということが見えてきた。ただ、私が知る限り、業務系で積極的に採用されているようには見えないので、不安も感じるが、MS的な方向としては確実にWPF
生産性保守性はどうなのであろうか?
その辺は、他人が書いた情報を見ているだけではわからないので、やはり自分で試すことが必要。
ちょっと書いてみよう。
ターゲットはより実用的なものがよい。
.NET Framework4.5 + WPF + Entity Framework + Linq + ODP.NET
この組み合わせで何か書いてみよう。

2015-03-26

[]ODP.NET が NuGet に対応してた! 23:27

「何をいまさら...」と言われてしまいそうだけど、最近Oracleから少し離れていたら、
ODP.NET 12c Release3(12.1.0.2.1)から、NuGetに対応してたんですね。
発行日は2015/01/16と表示されているので、もう2ヶ月以上も前に...

今回はWindowsFormでの使用を前提に、早速試してみました。
f:id:JF2LFG:20150326230127p:image
NuGetのパッケージ管理から、Oracleで検索すると現れる赤い12cのアイコンがそれです。
2つあります。ひとつはEntity Framework6対応のドライバ。そしてもうひとつがODP.NETです。
2つ目のODP.NETをインストールすると、依存関係にある、Entity Framework6とEntity Framework6対応のドライバとともにODP.NETがインストールされます。
おお、なんと楽チンなんでしょう(笑)。
App.config が自動で生成されるので、とりあえず下記の箇所を動作させる環境に合わせて書き換えます。

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="dsn" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hoge)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>
  <connectionStrings>
    <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client"
      connectionString="User Id=foo;Password=bar;Data Source=dsn"/>
  </connectionStrings>
</configuration>

とりあえず、簡単なテストを...
とあるテーブルから、全件をSelectし、textBoxに書き出す。

private void button1_Click(object sender, EventArgs e)
{
    this.textBox1.Text = "";
    using (var Conn = new OracleConnection())
    {
        Conn.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString;
        Conn.Open();
        string strSQL = "select CODE,NAME1 from TABLE1 order by CODE";
        OracleCommand Cmd = new OracleCommand(strSQL, Conn);
        OracleDataReader Reader = Cmd.ExecuteReader();
        while (Reader.Read())
        {
            this.textBox1.Text += Reader.GetString(0) + ":" + Reader.GetString(1) + "\r\n";
        }
        Reader.Dispose();
        Cmd.Dispose();
    }
}

たしか、すでに Code firstにも対応していたと思うので、近いうちにそちらも試してみようと思います。

2015-03-24

[]Nexus5(5.0.1)でLTE/3Gが使えなくなった! 18:48

1年ほど前に Nexus5をGoogle Playで購入して MVNO(BIGLOBE)のSIM入れて使ってます(妻がw)。

電波は拾っているようなのですが、アンテナアイコンに「!」が表示されて、モバイルネットワークが使えません。APNを再設定などしてみたけどダメ...

どんどん深みにハマって
system recoveryのメニューから
wipe cache partition を実行して再起動したら、
ロドイド君がお腹を上にして「!」を出しちゃう始末...
きゃぁ〜〜〜やっちまったかぁ?
気を取り直して再度 wipe cache をかけるとリカバリーしたようで
(ボリュームの大や小ボタンで動作が変わるので注意が必要
 ちょっと焦ってたので画像取り忘れた orz
とりあえず元にもどった。が、そもそもの問題は解決せず...

振り出しに戻ったところで、最初から考えて見ることに。

端末の状態を確認すると、
モバイルデータ通信」が「切断」
と表示されているということは、
単純に「使わない設定」になっているのではないかと。
で、ふと思う。
以前のバージョンで「モバイルデータ通信を有効にする」というメニューは何処へいった?

どうやら
[設定]-[データ使用量]-[モバイルデータ] の オン/オフ 
これに変わったらしい。
なんか変じゃないか?このメニュー。
なんで[データ使用量]の中に オン/オフ があるんだよ。

確認すると、なんとここが「オフ」になっているじゃないか!
「オン」に変えると、何事も無かったかのようにアンテナアイコンに「LTE」の表示が...

うーん、やっぱりあまり好きになれないな...Android
(個人的な感想ですw)

2015-03-22

[]OS XLinuxによるASP.NET 5アプリ開発ガイド 17:12

気がつくの、遅れたましたが、
こんな記事が連載されてました。
no title
時間作って試したいのであります!(←日本語が変w)

こちらも、要チェック!
no title