【VB.NET】Oracleに接続してデータを検索してみる
おはようございます。
結局、またVB.NETですが。
WPFでもやりましたが Oracle に接続してとりあえずのことをやってみます。
プログラムは前回のもの、データベースの作成なんかはWPFを参考にしてください。
スポンサーリンク
参照の追加
ソリューション・エクスプローラーの「参照」を右クリックして「参照の追加」を選択します。
参照の追加画面が表示されるので、「参照」ボタンをクリックします。
Oracle.DataAcess.dllを選択し、「追加」ボタンをクリックして完了です。
プログラム修正
宣言の追加
下記の記述を追加します。
1 2 | ImportsSystem.Data ImportsSystem.Data.OracleClient |
起動時の処理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | ''' <summary> ''' フォームロード時の処理 ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> PrivateSubForm1_Load(sender AsObject,eAsEventArgs)HandlesMyBase.Load Using conn AsNewOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;") ' データベースオープン conn.Open() ' 種別コンボボックスの内容をデータベースから取得して設定 ' データを取得 Dimcmd AsOracleCommand=NewOracleCommand("SELECT * FROM MSTKIND",conn) Dimda AsOracleDataAdapter=NewOracleDataAdapter(cmd) Dimdt AsDataTable=NewDataTable() da.Fill(dt) ' コンボボックスに値を設定 Dimsources AsList(Of Kind)=NewList(Of Kind) DimkAsKind=NewKind() k.KindCd="" k.KindName="指定なし" sources.Add(k) For Each row AsDataRow In dt.Rows k=NewKind() k.KindCd=row("KIND_CD").ToString() k.KindName=row("KIND_NAME").ToString() sources.Add(k) Next Me.cmbKind.DataSource=sources Me.cmbKind.DisplayMember="KindName" ' データベースクローズ conn.Close() EndUsing EndSub |
検索処理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | ''' <summary> ''' 検索処理 ''' </summary> PrivateSubsearch() Using conn AsNewOracleConnection("Data Source=localhost;User Id=USER01;Password=USER01;") ' データベースオープン conn.Open() ' 検索条件を指定してデータを取得 Using con AsNewDataContext(conn) DimsearchName AsString=txtName.Text DimsearchKind AsString=CType(cmbKind.SelectedValue,Kind).KindCd ' 種別マスタ取得 ' 種別コンボボックスの内容をデータベースから取得して設定 ' データを取得 Dimcmd AsOracleCommand=NewOracleCommand("SELECT * FROM MSTKIND",conn) Dimda AsOracleDataAdapter=NewOracleDataAdapter(cmd) Dimdt AsDataTable=NewDataTable() da.Fill(dt) DimkindList AsList(Of Kind)=NewList(Of Kind) DimkAsKind=NewKind() For Each row AsDataRow In dt.Rows k=NewKind() k.KindCd=row("KIND_CD").ToString() k.KindName=row("KIND_NAME").ToString() kindList.Add(k) Next ' 猫一覧取得 DimSql AsString="SELECT * FROM TBLCAT" Dimwhere AsString="" If(searchName<>"")Then where=" WHERE NAME LIKE '"+searchName+"%'" EndIf If(searchKind<>"")Then If(where<>"")Then where+=" AND" Else where=" WHERE" EndIf where+=" KIND_CD = '"+searchKind+"'" EndIf Sql+=where cmd=NewOracleCommand(Sql,conn) da=NewOracleDataAdapter(cmd) dt=NewDataTable() da.Fill(dt) ' データグリッドビューに設定 DimiAsInteger=0 dgvCat.Rows.Clear() Fori=0To dt.Rows.Count()-1 ' 行追加 dgvCat.Rows.Add() ' No(プライマリなので編集不可) Dimno=NewDataGridViewTextBoxCell() no.Value=dt.Rows(i)("No") dgvCat(0,i)=no dgvCat(0,i).ReadOnly=True ' 名前 Dimname=NewDataGridViewTextBoxCell() name.Value=dt.Rows(i)("Name") dgvCat(1,i)=name ' 性別 Dimsex=NewDataGridViewComboBoxCell() sex.Items.AddRange({"♂","♀"}) sex.DisplayStyle=DataGridViewComboBoxDisplayStyle.ComboBox dgvCat(2,i)=sex dgvCat(2,i).Value=dt.Rows(i)("Sex") ' 年齢 Dimage=NewDataGridViewTextBoxCell() age.Value=dt.Rows(i)("Age") dgvCat(3,i)=age ' 種別 Dimkind=NewDataGridViewComboBoxCell() kind.DataSource=kindList kind.DisplayMember="KindName" kind.ValueMember="KindCd" kind.DisplayStyle=DataGridViewComboBoxDisplayStyle.ComboBox dgvCat(4,i)=kind dgvCat(4,i).Value=dt.Rows(i)("Kind_Cd") ' 好物 Dimfavorite=NewDataGridViewTextBoxCell() favorite.Value=dt.Rows(i)("Favorite") dgvCat(5,i)=favorite Next EndUsing ' データベースクローズ conn.Close() EndUsing EndSub |
まとめ
ちょっと画面は取り忘れましたが、これでOracleからデータ取得、表示ができます。
次回もOracleの予定です。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません