0

我有一个包含多行的配置文件。

DataBaseType =1
ServerName=LAPTOP-XXXX
Database=mydatabase
Connection Timeout=3000
User ID=sa
Password=sasa
ServerIp=xxxx:8083
ServiceType=http://
Backup Driver=D:\
Backup Folder=SWBACKUP
Database Restore=D:\

现在我想通过读取、拆分和连接文本来生成一个字符串,它将是一个 sqlconnection 字符串。它应该是

"Data Source=LAPTOP-XXXX;Initial Catalog=mydatabase;User ID=sa;Password=sasa"

我可以使用 streamreader 阅读文本,但我无法拆分和加入这些文本。

4

2 回答 2

1

您可以创建一个将配置文件转换为 a 的方法,Dictionary(Of String, String)然后根据需要获取值。

看看这个例子:

Private Function ReadConfigFile(path As String) As Dictionary(Of String, String)
    If (String.IsNullOrWhiteSpace(path)) Then
        Throw New ArgumentNullException("path")
    End If
    If (Not IO.File.Exists(path)) Then
        Throw New ArgumentException("The file does not exist.")
    End If

    Dim config = New Dictionary(Of String, String)
    Dim lines = IO.File.ReadAllLines(path)
    For Each line In lines
        Dim separator = line.IndexOf("=")
        If (separator < 0 OrElse separator = line.Length - 1) Then
            Throw New Exception("The following line is not in a valid format: " & line)
        End If

        Dim key = line.Substring(0, separator)
        Dim value = line.Substring(separator + 1)
        config.Add(key, value)
    Next

    Return config
End Function

示例:现场演示

这个函数的作用是:

  1. 确保给出了路径
  2. 确保文件作为给定路径存在
  3. 循环遍历每一行
  4. 确保该行格式正确(键=值)
  5. 将键/值附加到字典
于 2021-01-22T19:22:42.483 回答
0

您可以使用readline方法,然后为数据库行制作如下内容:

Dim reader As New StreamReader(filetoimport.Txt, Encoding.Default)

Dim strLine As String

Do 
' Use ReadLine to read from your file line by line
strLine = reader.ReadLine 

Dim retString As String
'to get the string from position 0 length 8
retString = strLine .Substring(0, 8)

'check if match
if retString ="Database" Then

Dim valueString As String
valueString = strLine .Substring(9, strLine.length)

...


Loop Until strLine  Is Nothing
于 2021-01-22T19:15:07.973 回答