
C# テーブル項目名・各項目のデータを抽出したい
プログラミングを始めて2ヶ月の初心者です。
C#でoracleのDBからテーブル項目名とそのデータを抽出し、
それをcsvファイルに出力したいです。
csvファイルに出力した際に、
1行目にとあるテーブルの項目名があって
2行目からは1行目の項目名に沿ったデータがある、という形にしたいのです。
(分かり辛くてすみません)
会社の課題で行っているのですが全くわかりません。
以下form1
C#
1 2using System; 3using System.Collections.Generic; 4using System.ComponentModel; 5using System.Data; 6using System.Drawing; 7using System.Linq; 8using System.Text; 9using System.Windows.Forms; 10using System.Text.RegularExpressions; 11using System.IO; 12using System.Configuration; 13using Oracle.DataAccess.Client; 14 15 //(ここにセーブファイルダイアログを開くコードがあるのですが省略します) 16 17 private void button2_Click(object sender, EventArgs e) 18 { 19 //DB接続情報を作成 20 var connectionString = "User Id=ID; Password=PASS; Data Source=DS"; 21 // データベース接続の準備 22 OracleConnection conn = new OracleConnection(connectionString); 23 24 List<Class1> value = new List<Class1>();//class1 25 String tblname = String.Empty; 26 using (StreamWriter sw = new System.IO.StreamWriter(textBox2.Text, false, Encoding.Default)) 27 //テーブル項目名のセレクト 28 try 29 { 30 conn.Open(); 31 OracleCommand cmd = new OracleCommand() 32 { 33 Connection = conn, 34 CommandText = @"SELECT * FROM ALL_TAB_COLUMNS, 35 WHERE TABLE_NAME = 'テーブル名',ORDER BY COLUMN_ID asc" 36 }; 37 OracleDataReader reader = cmd.ExecuteReader(); 38 39 if (reader.HasRows) 40 { 41 while (reader.Read()) 42 { 43 tblname = new Class1().ToString(); 44 tblname = reader["COLUMN_NAME"].ToString(); 45 value.Add(tblname); 46 } 47 } 48 } 49 catch 50 { 51 } 52 53 //データ抽出のためのselect 54 try 55 { 56 // データベースの接続開始 57 conn.Open(); 58 // 実行 59 OracleCommand cmd = new OracleCommand() 60 { 61 Connection = conn, 62 CommandText = @"SELECT * 63 FROM テーブル名" 64 }; 65 //クエリを実行 66 OracleDataReader reader = cmd.ExecuteReader(); 67 68 using (StreamWriter sw = new System.IO.StreamWriter(textBox2.Text, false, Encoding.Default)) 69 if(reader.HasRows) 70 { 71 //DBからデータを読み込む 72 while (reader.Read()) 73 { 74 foreach() 75 { 76 //class1を出力する処理 77 78 //出力 79 //string DQ = "\""; 80 //sw.WriteLine(Environment.NewLine);// 81 //sw.Write(WriteLine); 82 } 83 } 84 } 85 } 86 87 //例外処理 88 catch (Exception exception) 89 { 90 MessageBox.Show("処理が正しく行えませんでした。"); 91 Console.WriteLine(exception.Message); 92 } 93 94 //必ず通る処理 95 finally 96 { // 接続を解除 97 conn.Close(); 98 } 99 100 MessageBox.Show("出力完了"); 101 }
for eachを使えば項目名とデータを取得できると(教育係の方から)聞いたので
なんとか使って csvファイルへ出力できれば…と思うのですが…
もうこの課題だけでかなり時間が経っています。
インターネットで検索したり、同期に教えて貰いながらなんとかここまでは書けましたが
正直もう終わる気がしないです。
ヒントだけでも良いので教えてほしいです。
よろしくおねがいします。
補足情報(FW/ツールのバージョンなど)
・visualstudio2010のc#を使用しています。
・
回答3件
あなたの回答
tips
プレビュー