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

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

新規登録して質問してみよう
ただいま回答率
87.20%
C#

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

Oracle

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

解決済

C# テーブル項目名・各項目のデータを抽出したい

toyamaken
toyamaken

総合スコア0

C#

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

Oracle

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

3回答

0評価

0クリップ

6381閲覧

投稿2018/06/06 03:23

C# テーブル項目名・各項目のデータを抽出したい

プログラミングを始めて2ヶ月の初心者です。

C#でoracleのDBからテーブル項目名とそのデータを抽出し、
それをcsvファイルに出力したいです。
csvファイルに出力した際に、
1行目にとあるテーブルの項目名があって
2行目からは1行目の項目名に沿ったデータがある、という形にしたいのです。
(分かり辛くてすみません)
会社の課題で行っているのですが全くわかりません。

以下form1

C#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; using System.Configuration; using Oracle.DataAccess.Client;  //(ここにセーブファイルダイアログを開くコードがあるのですが省略します) private void button2_Click(object sender, EventArgs e) { //DB接続情報を作成   var connectionString = "User Id=ID; Password=PASS; Data Source=DS"; // データベース接続の準備 OracleConnection conn = new OracleConnection(connectionString); List<Class1> value = new List<Class1>();//class1 String tblname = String.Empty; using (StreamWriter sw = new System.IO.StreamWriter(textBox2.Text, false, Encoding.Default)) //テーブル項目名のセレクト try { conn.Open(); OracleCommand cmd = new OracleCommand() { Connection = conn, CommandText = @"SELECT * FROM ALL_TAB_COLUMNS, WHERE TABLE_NAME = 'テーブル名',ORDER BY COLUMN_ID asc" }; OracleDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { tblname = new Class1().ToString(); tblname = reader["COLUMN_NAME"].ToString(); value.Add(tblname); } } } catch { } //データ抽出のためのselect try { // データベースの接続開始 conn.Open(); // 実行 OracleCommand cmd = new OracleCommand() { Connection = conn, CommandText = @"SELECT * FROM テーブル名" }; //クエリを実行 OracleDataReader reader = cmd.ExecuteReader(); using (StreamWriter sw = new System.IO.StreamWriter(textBox2.Text, false, Encoding.Default)) if(reader.HasRows) { //DBからデータを読み込む while (reader.Read()) { foreach() { //class1を出力する処理 //出力 //string DQ = "\""; //sw.WriteLine(Environment.NewLine);// //sw.Write(WriteLine); } } } } //例外処理 catch (Exception exception) { MessageBox.Show("処理が正しく行えませんでした。"); Console.WriteLine(exception.Message); } //必ず通る処理 finally { // 接続を解除 conn.Close(); } MessageBox.Show("出力完了"); }

for eachを使えば項目名とデータを取得できると(教育係の方から)聞いたので
なんとか使って csvファイルへ出力できれば…と思うのですが…
もうこの課題だけでかなり時間が経っています。
インターネットで検索したり、同期に教えて貰いながらなんとかここまでは書けましたが
正直もう終わる気がしないです。
ヒントだけでも良いので教えてほしいです。

よろしくおねがいします。

補足情報(FW/ツールのバージョンなど)

・visualstudio2010のc#を使用しています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

SurferOnWww
SurferOnWww

2018/06/06 03:42

なぜ「教育係の方」に聞かないのですか? 宿題とか会社の研修の課題などをこういうところで聞くのは、特にやむを得ぬ事情がない限り、まず歓迎されないのが普通なのですけど・・・
toyamaken
toyamaken

2018/06/06 03:52

教育係の方には、やり方や何を使ったらいいか~等色々教わってはいるのですが、忙しく、会社にいる時間が殆ど取れないので、その方のレスポンスを待つ間に何かヒントがもらえればいいな…と思い質問しました。でも自分でやらなければいけない事ですので あまりこういう場で聞くのは良くないですよね… 気をつけます。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Oracle

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