Я делаю проект, в котором мне нужно читать данные из таблицы SQL (называется Table_IDs_Name). В этой таблице я должен прочитать столбец (Variable_Name) и получить каждую строку в массиве (вызывается в коде как Names_Array). Я пробую следующий код, и я получаю значения с помощью считывателя, но как я могу поместить их в массив? Это очень важно, поэтому надеюсь, что вы можете помочь мне с этим
Public SQL_Connection As SqlConnection
Public SQL_Command As SqlCommand
Public SQL_Connection_String As String
Public Names_Array() As String
SQL_Connection_String = "---------------------------"
SQL_Connection = New SqlConnection(SQL_Connection_String)
SQL_Connection.Open()
Dim SQL_Statement_Array As String = "SELECT Variable_Names From Table_IDs_Names"
SQL_Command = New SqlCommand(SQL_Statement_Array, SQL_Connection)
Dim Reader As SqlDataReader
Dim i As Integer
Reader = SQL_Command.ExecuteReader()
While Reader.Read()
Console.WriteLine(Reader("Variable_Name").ToString().ToArray())
Names_Array(i) = Reader("Variable_Name").ToString().ToArray()
i = i + 1
Console.WriteLine("PROBANDO {0}", Names_Array(i))
End While
SQL_Command.Dispose()
Используйте List(Of String)
, чтобы добавлять элементы по ходу дела. Затем вы можете использовать это как есть или, если вам действительно нужен массив, просто вызовите для него ToArray
.
Можете ли вы объяснить мне, как реализовать список строк и куда звонить в коде? никогда не используйте эту функцию
Джон предложил использовать List
строки, который происходит от System.Collection.Generic
.
Import System.Collection.Generic
.... 'rest of the code
'declare list of string to store stuff
Dim lst as List(Of String) = new List(Of String)
'iterate query result
While Reader.Read()
'add query result to the list
lst.Add(Reader("Variable_Name").ToString())
End While
Вы можете использовать список строк с именем lst
в цикле или преобразовать его в массив с помощью lst.ToArray()
.
Примечание: я очень давно не писал на vb.net.
Несколько вещей, которые могут сбить с толку новичков в этом деле:
Using
, чтобы убедиться, что они правильно расположены.Все это в стороне, мы можем посмотреть на код:
Public Module DB
Private ConnectionString As String = "---------------------------"
'I'm extending this to filter by TableID, just so I can demonstrate a parameterized query
Public Shared Iterator Function GetIDVariables(TableID As Integer) As IEnumerable(Of String)
Dim SQL As String = "SELECT Variable_Names From Table_IDs_Names WHERE TableID = @TableID"
Using cn As New SqlConnection(ConnectionString), _
cmd As New SqlCommand(SQL, cn)
cmd.Parameters.Add("@TableID", SqlDbType.Int).Value = Table
cn.Open()
Using rdr As SqlDataReader = cmd.ExecuteReader()
While rdr.Read()
Yield DirectCast(rdr("Variable_Names"), String)
End While
rdr.Close()
End Using
End Using
End Function
End Module
А затем в другом коде:
Dim data = DB.GetIDVariables(12345)
For Each variable As String in data
Console.WriteLine($"PROBANDO {variable}")
Next
привет, Гусо, может быть, тебе следует пометить этот вопрос тегом vb.net.