Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL数据库处理文本文件-Visual Basic_Sql_Vb.net_Text Files_File Handling - Fatal编程技术网

使用SQL数据库处理文本文件-Visual Basic

使用SQL数据库处理文本文件-Visual Basic,sql,vb.net,text-files,file-handling,Sql,Vb.net,Text Files,File Handling,我有一个包含分隔记录的文本文件 1243;jhhf';982u4k;9u2349;huf8 kij;9238u;98ur23;jfwf;03i24 我需要用SQL数据库返回的值替换每个记录的第四部分的值(从T中选择X,其中C='第四部分来自平面文件') 问候, 桑托什。试试这个: Dim newLines As List(Of String) = New List(Of String) Dim sqlConn As New SqlConnection(connectionString) Dim

我有一个包含分隔记录的文本文件

1243;jhhf';982u4k;9u2349;huf8
kij;9238u;98ur23;jfwf;03i24
我需要用SQL数据库返回的值替换每个记录的第四部分的值(
从T中选择X,其中C='第四部分来自平面文件'

问候,
桑托什。

试试这个:

Dim newLines As List(Of String) = New List(Of String)
Dim sqlConn As New SqlConnection(connectionString)
Dim SQLCmd As New SqlCommand()
SQLCmd.Connection = sqlConn
Dim lines As String() = File.ReadAllLines(filename)
sqlConn.Open()
For Each line As String In lines
    Dim parts As String() = line.Split(";")
    SQLCmd.CommandText = "Select X from T where C=""" & parts(3) & """"
    Dim dr As SqlDataReader = SQLCmd.ExecuteReader
    While dr.Read()
        parts(3) = dr("X")
    End While
    newLines.Add(String.Join(";", parts))
Next
File.WriteAllLines(filename, newLines.ToArray())
sqlConn.Close()
试试这个:

Dim newLines As List(Of String) = New List(Of String)
Dim sqlConn As New SqlConnection(connectionString)
Dim SQLCmd As New SqlCommand()
SQLCmd.Connection = sqlConn
Dim lines As String() = File.ReadAllLines(filename)
sqlConn.Open()
For Each line As String In lines
    Dim parts As String() = line.Split(";")
    SQLCmd.CommandText = "Select X from T where C=""" & parts(3) & """"
    Dim dr As SqlDataReader = SQLCmd.ExecuteReader
    While dr.Read()
        parts(3) = dr("X")
    End While
    newLines.Add(String.Join(";", parts))
Next
File.WriteAllLines(filename, newLines.ToArray())
sqlConn.Close()

请注意,我的部分答案取自我在OP post系统上的上一个答案。请注意,我的部分答案取自我在OP post系统上的上一个答案。IndexOutOfRangeException was unhandled Message=“Index超出了数组的边界。”@user1157902:这意味着
line.Split
返回的部分少于4个,所以你的文件不是你描述的那样,我想;BC160;D/n X;YZ161;W/n P;QR162;序列号A;BC163;D/n(4行)这是内容。我只是在实际实现之前进行测试。@Santhosh_ms3:我尝试了我的代码,它对我很有效;我编辑它是因为datareader名称错误,但我无法重现您的错误。您确定“/n”吗?那是一条新行吗?是的,它(\n)是一条新行。实际上,我得到了一个错误{“已经有一个与此命令相关联的打开的DataReader,必须先关闭它。”}因此将Sqldr作为Sqldr.close()关闭。在此之后,获取异常“索引超出了arraySystem的边界。IndexOutOfRangeException未经处理Message=“索引超出了数组的边界。“@user1157902:这意味着
line.Split
返回的不到4个部分,因此您的文件不是您描述的方式,我认为;BC160;D/n X;YZ161;W/n P;QR162;序列号A;BC163;D/n(4行)这是内容。我只是在实际实现之前进行测试。@Santhosh_ms3:我尝试了我的代码,它对我很有效;我编辑它是因为datareader名称错误,但我无法重现您的错误。您确定“/n”吗?那是一条新行吗?是的,它(\n)是一条新行。实际上,我得到了一个错误{“已经有一个与此命令相关联的打开的DataReader,必须先关闭它。”}因此将Sqldr作为Sqldr.close()关闭。在此之后,获取“异常”索引超出了数组的边界