こんにちは。
VB初心者です。
前任者が作成したCSVファイルをメモリに格納するプログラムから
Oracleテーブルのデータからメモリへ格納するプログラムへ
変更したいのですが、全くのVB初心者でわかりません。
ヒントでもいいですので教えてください。
CSVファイルをメモリに格納するプログラムは以下の通りです。
Function ReadCSV(ByVal szFilePath As String) As String()()
' (全般) に Imports 追記
' Imports System.IO
' Imports System.Text
Dim arrayTempLines()() As String = {}
' ストリームを開きます
Dim reader As New IO.StreamReader(szFilePath, System.Text.Encoding.Default)
Dim iIdx As Integer = 0
' 一気に読み込みます
Dim szData As String = reader.ReadToEnd()
' 不要な文字を取り除きます
szData = szData.Replace(vbCr, "")
' 改行で分離して配列に格納します
Dim arrayLines() = szData.Split(vbLf)
Dim szLine As String
For Each szLine In arrayLines
Dim iCount As Integer = 0
Dim szTemp As String = ""
Dim bValid As Boolean = False
If szLine.Length > 1 Then
' 配列の追加します
ReDim Preserve arrayTempLines(iIdx)
' カンマ区切りで分離して配列に格納します
arrayTempLines(iIdx) = szLine.Split(",")
' データのチェックをします
If arrayTempLines.Length >= 1 And _
arrayTempLines(iIdx)(0) <> "" Then bValid = True
' 不要データを除きます
For Each szTemp In arrayTempLines(iIdx)
arrayTempLines(iIdx)(iCount) = _
szTemp.Replace(Chr(34), "").TrimEnd() ' Chr(34)は"のことを指します
iCount += 1
Next
' 配列数チェックをします
If bValid Then iIdx += 1
End If
Next
' 配列を切り詰めます
'ReDim Preserve arrayTempLines(iIdx - 1)
' 読み込み用のストリームを閉じます
If (Not reader Is Nothing) Then
reader.Close()
reader = Nothing
End If
ReadCSV = arrayTempLines
End Function
以上です。
ちなみに、Oracleテーブルの中にはフィールドが二つあります。
Oracle Databaseなら,まずはODP.NETの導入が必要です。
NuGetパッケージマネージャでOracle.ManagedDataAccessを探してインストールします。
https://www.nuget.org/packages/Oracle.ManagedDataAccess/
あとは,
・OracleConnectionインスタンスを作ってコネクションを作成,Openメソッドでコネクションを開く
・OracleCommandにSELECT文とコネクションを設定
・OracleCommandのExecuteReaderでSELECT文を実行
・OracleDataReader.Read()がTrueである間,GetStringを呼び出してカラムを取得する
・OracleDataReader, OracleCommand, OracleConnectionを全て閉じる
という処理になるかと思います。
ref) Getting Started with Oracle Data Provider for .NET (C# Version)
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/GettingStartedNETVersion/GettingStartedNETVersion.htm
ツイート | ![]() |