| 分類:[C#]
開発環境 Winddows10 64bitOS Visial Studio 2019 Community版 C# ※C#のバージョンというものがよくわかっていませんが、 .net framework 4.5のことでよろしいでしょうか。
C#でOracleDBからSelectしてデータを取り出す処理を作成しようとしています。 しかしSelectどころかOpenの段階でNullReferenceExceptionエラーが出てしまい処理を進めることができません。
下のコードを走らせるて作られるボタンをクリックすると、ポップアップで「接続文字列作成」が表示され、OKを押すと、NullReferenceExceptionエラーを吐きます。 エラーの詳細を見る限りoracleConnection.Open()の箇所なので何かしら接続にいたる部分でエラーを吐いているのだとは思いますが・・・。 NullReferenceExceptionエラーが出るのが接続文字列が間違っている(存在しないIPに接続しようとしているとか)なのか、そもそもの接続に関する根本的な間違いなのかもわかっていません。 具体的に何が悪いのか、あるいは間違っている可能性として接続文字列なのか、コードそのものがおかしいのかご教授いただけますか。
接続文字列は下記方法以外に、tnsnames.oraを使う方法もあるようでしたが、最終的にOracleクライアントをインストールしていない端末で使用したいためtnsnames.oraは使っていません。 (コンフィグをあれこれすればできそうだとは思ったのですが、ちょっとわからないことが多くて諦めました) Usingの一部を省略しています。またIPアドレス、フィールド名等は変更していますが'",;あたりは変わらないようにしたつもりです。
using Oracle.ManagedDataAccess; public partial class Form_Test : Form { private void Button_Test_Click(object sender, EventArgs e)
MessageBox.Show("開始"); string sqlText = "SELECT F1,F2 FROM T1 WHERE F1='0000001'"; try { using (Oracle.ManagedDataAccess.Client.OracleConnection oracleConnection = new Oracle.ManagedDataAccess.Client.OracleConnection()) { MessageBox.Show("接続準備"); oracleConnection.ConnectionString = "User ID = AA; Password = BB; Data Source=" + "(DESCRIPTION=" + "(ADDRESSLIST=" + "(ADDRESS=" + "(PROTOCOL=TCP)" + "(HOST=100.100.10.100)" + "(PORT=1521)" + ")" + ")" + "(CONNECT_DATA=" + "(SERVICE_NAME=CC)" + ")" + ")"; MessageBox.Show("接続文字列作成"); oracleConnection.Open(); MessageBox.Show("接続"); using (Oracle.ManagedDataAccess.Client.OracleCommand oracleCommand = new Oracle.ManagedDataAccess.Client.OracleCommand(sqlText)) { oracleCommand.Connection = oracleConnection; oracleCommand.CommandType = CommandType.Text; using (Oracle.ManagedDataAccess.Client.OracleDataReader oracleDataReader = oracleCommand.ExecuteReader()) { while (oracleDataReader.Read()) { MessageBox.Show(oracleDataReader["F1"] + "_" + oracleDataReader["F2"]); } } } } } catch(Exception error) { MessageBox.Show(error.ToString()); } }
|