質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

1回答

313閲覧

『ASP.NET Core MVC』と『OracleDatabase 19c』の接続について教えてください

reitou_togamu

総合スコア3

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2025/03/11 02:23

実現したいこと

ASP.NET Core MVCにて、DBのデータをブラウザに表として表示したい。

前提

Visual Studio 2022
Windows11
OracleDatabase19c

プログラミング超初心者です。
OracleDBの把握している情報は以下です。

接続文字列:AAA_DB
サービス名:aaadbb
IPアド:XX-XX-XX-XXX
ユーザー名(スキーマ名):user1
パスワード:password1
テーブル:TABLE_NAME
実行したいSQL:SELECT 列1,列3,列7 FROM TABLE_NAME ORDER BY 列1;

該当のソースコード

●インストールしたNuGetパッケージ
・Oracle.ManagedDataAccess
・Oracle.ManagedDataAccess.EntityFramework

Controller

1namespace [ソリューション名].Controllers 2{ 3 public class DataScreenController : Controller 4 { 5 private TablesContext db = new TablesContext(); 6 public ActionResult DataScreen() 7 { 8 return View(db.Tables.ToList()); 9 } 10 } 11}

Model1つ目

1namespace [ソリューション名].Models 2{ 3 public class Table 4 { 5 public int id { get; set; } 6 7 [Display(Name = "列1")] 8 public string [列1名] { get; set; } 9 10 [Display(Name = "列3")] 11 public string [列3名] { get; set; } 12 13 [Display(Name = "列7")] 14 public string [列7名] { get; set; } 15 } 16} 17

Model2つ目

1namespace [ソリューション名].Models 2{ 3 public class TablesContext : DbContext 4 { 5 public DbSet<Table> Tables { get; set; } 6 } 7} 8

View

1@model IEnumerable<[ソリューション名].Models.Table> 2@{ 3 ViewBag.Title = "DataScreen"; 4} 5<table class="table"> 6 <tr> 7 <th> 8 @Html.DisplayNameFor(model => model.[列1名] ) 9 </th> 10 <th> 11 @Html.DisplayNameFor(model => model.[列3名] ) 12 </th> 13 <th> 14 @Html.DisplayNameFor(model => model.[列7名] ) 15 </th> 16 </tr> 17 @foreach (var item in Model) 18 { 19 <tr> 20 <td> 21 @Html.DisplayFor(modelItem => item.[列1名] ) 22 </td> 23 <td> 24 @Html.DisplayFor(modelItem => item.[列3名] ) 25 </td> 26 <td> 27 @Html.DisplayFor(modelItem => item.[列7名]) 28 </td> 29 </tr> 30 } 31</table>

正直言うと、usingについてはどこになにを書いたらいいのか理解できていません。
思いとしては、DBへの接続情報を記載していないため『Web.config』になにか追記するのではないかなぁと思っているのですが書き方がわかりません。
もしわかる方、もしくは自分ならこうする。これが足りない。などありましたご意見いただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/03/12 04:37

Oracleデータベースへの接続環境が無いのでコメントのみですが、 > プログラミング超初心者です。 ... > 正直言うと、usingについてはどこになにを書いたらいいのか理解できていません。 この習熟状況ですとさすがに回答可能な方もどこから説明してよいか悩み、回答を避けられがちになります。まずは順番に、 1. C#の基本的なところを学び、 2. ASP.NET Core MVCはいったん置いておいて簡単なクライアントアプリケーション(Windows Formsとか)を作れるようにして 3. 「Oracle.ManagedDataAccess」だけをnugetでインストールしてOracle DBに接続し、SQLを実行して結果を得る ようなアプリを作れるようになってから、ASP.NET Core MVCベースのWEBアプリを作るようにすることをお勧めします。 「Oracle.ManagedDataAccess.EntityFramework」は最初は使わなくてよいと思います。理解して使えれば便利ですが、ある程度でも分ってないと振り回されるばかりです。 尚、ChatGPTとか生成AIだけを使って望むアプリのかたちにするのは、最初は無理だと考えましょう。
dodox86

2025/03/12 05:54

尚、先のコメントは書いたコードをあくまでご自身で理解できるようになる為の手順のひとつなので、「コードはよく理解できなくていいからとにかくOracle 19cのDBに接続してテーブルをWEBブラウザ上に表示させたい」のであれば、その旨を記載すれば(これを含む)余計なコメントは避けられるかもしれません。色々なスタイルの質問者・回答者が居るので。
hqf00342

2025/03/12 10:50

ASP.NET "Core"で合っていますか? web.configとも書かれているので従来のASp.NETなのか、どちらなのか判断つかないです。 プロジェクト作成時に選択したフレームワーク(.NET9 等)を追記しましょう。
reitou_togamu

2025/03/13 05:25

dodox86さん、hqf00342さん、 ご回答ありがとうございます! dodox86さんがおっしゃる通り、自分での理解が足りておらず「Oracle.ManagedDataAccess.EntityFramework」を入れてみたものの、何がどう変わって何をすればいいのか分かっていない状況です。 hqf00342さんがおっしゃっている内容もどう違うのかも分かっていない状況です。 大変申し訳ありません。 基礎的なことは1からゆっくりと学んでいこうとは思うのですが、 一旦イメージを付けたいため、「コードはよく理解できなくていいからとにかくOracle 19cのDBに接続してテーブルをWEBブラウザ上に表示させたい」 という内容と解釈していただけると嬉しいです。
guest

回答1

0

ASP.NET Core 8以降+EFcore、Oracleにテーブル無(コードファーストモデル)と仮定します。
ASP.NET Coreではなく ASP.NET MVC5であればこれを参考にしないでください。

DBへの接続例を書きますが、正しくはMS公式のEFCoreのページを読んでください。
説明を短くするためコードを簡略化しています。

必要なnugetパッケージ
  • Oracle.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Tools
Program.cs

DB接続情報を記載しDIに登録します。接続文字列connStrはtnsnames.oraなどから自分の環境に合うよう変更してください。

cs:program.cs

1using Microsoft.EntityFrameworkCore; 2using TablesContextのnamespace; 3 4var builder = WebApplication.CreateBuilder(args); 5//以下2行を追記。接続文字列は本来、appsettings.jsonに記述すべき 6var connStr = @"User Id=system;Password=oracle;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=FREEPDB1)));"; 7builder.Services.AddDbContext<TablesContext>(options => options.UseOracle(connStr)); 8//以降省略
DbContext派生クラスを修正

cs:

1public class TablesContext : DbContext 2{ 3 public DbSet<Table> Tables { get; set; } 4 public TablesContext (DbContextOptions<TablesContext> options) : base(options) { } 5}

コントローラの例も書いておきます

cs

1public class DataScreenController : Controller 2{ 3 private TablesContext _db; 4 public DataScreenController(TablesContext db) => _db = db; 5 [HttpGet] 6 public ActionResult Index() 7 { 8 //必要なデータをViewへ渡す 9 } 10}
マイグレーション実施

C#のコードを元にしてOracleにテーブルを作ります。
VisualStudioならパッケージマネージャーコンソールから以下の2コマンドを実行します

PM> Add-Migration initCreate PM> Update-Database

成功すればOracleに接続でき、 Tableテーブルが作成されます。
失敗した場合は接続文字列などが間違っていないか確認します。

View部分は省略します。頑張って直してください。

投稿2025/03/13 10:09

編集2025/03/14 11:48
hqf00342

総合スコア387

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問