2014年7月13日 星期日

[RESOLVED] Unable to cast object of type 'System.String' to type 'System.String[]'.


im trying to retrieve contents of a field from the database , but im getting :


 


Unable to cast object of type 'System.String' to type 'System.String[]'.


below is my code


Private Function createpath() As String


Dim conread As New SqlConnection("Data Source=.;Integrated Security=True;MultipleActiveResultSets=True;Initial Catalog=CMS")
Dim sqlgetpath As New SqlCommand
conread.Open()

sqlgetpath = New SqlCommand("SELECT FileName from NewLis", conread)

reader = sqlgetpath.ExecuteReader

reader.Read()


Dim listfilename() As String = reader("FileName")



For Each listFile As String In listfilename

Dim writer As New System.IO.StreamWriter("d:\nf\aio.txt", True)
writer.WriteLine(reader("FileName").ToString())

Next

reader.Close()
conread.Close()

Return listfilename.ToString()


End Function

hope someone can help !!



Use the following code:


Dim conread As New SqlConnection("Data Source=.;Integrated Security=True;MultipleActiveResultSets=True;Initial Catalog=CMS")
Dim sqlgetpath As New SqlCommand
conread.Open()

sqlgetpath = New SqlCommand("SELECT FileName from NewLis", conread)

reader = sqlgetpath.ExecuteReader
Dim allFiles as String
allFiles=""

Dim writer As New System.IO.StreamWriter("d:\nf\aio.txt", True)
Dim s as string
while (reader.Read())
s=reader("FileName").ToString()
allFiles=allFiles + s + ","
writer.WriteLine(s)
End while
reader.Close()
conread.Close()
writer.close()

Return allFiles





You can go with below code:


Private Function createpath() As String
Dim conread As New SqlConnection("Data Source=.;Integrated Security=True;MultipleActiveResultSets=True;Initial Catalog=CMS")
Dim sqlgetpath As New SqlCommand
sqlgetpath = New SqlCommand("SELECT FileName from NewLis", conread)
Dim custDA As SqlDataAdapter = New SqlDataAdapter
custDA.SelectCommand = sqlgetpath
conread.Open()
Dim listfilename As DataTable = New DataTable
custDA.Fill(listfilename)

For Each listFile As DataRow In listfilename.Rows
Dim writer As New System.IO.StreamWriter("d:\nf\aio.txt", True)
writer.WriteLine(listFile("FileName").ToString())
Next listFile
conread.Close()
Return listfilename.ToString()
End Function

Don't forget to add,


Imports System.Data.SqlClient
Imports System.Data









It's called boxing ... cuz it's already string


For Each listFile As String In listfilename
Dim writer As New System.IO.StreamWriter("d:\nf\aio.txt", True)
writer.WriteLine(listFile)
Next






沒有留言:

張貼留言