Я использую Visual Studio 2022 (VB.Net) и SQL Server 2022 Express. Я не программист; Мне просто нравится учиться программировать и пытаться учиться.
У меня есть программа, и я пытаюсь получить доступ к данным в созданной мной таблице, но когда я пытаюсь подключить представление DataGrid к таблице, там ничего нет. Смотрите скриншоты.
Если бы кто-нибудь мог мне подсказать, я был бы очень признателен.
Кевин
Изображение совершенно ненужно. Любой, кто использует этот сайт и имеет хоть какое-то представление о том, что такое DataGrid, поймет, что означает «там ничего нет», без графической демонстрации. Изображения следует использовать только в случае крайней необходимости, чтобы продемонстрировать проблему, чего в данном случае явно нет. Пожалуйста, смотрите Пожалуйста, не загружайте изображения кода/данных/ошибок. список причин НЕ использовать изображения.
Кроме того, не предоставляя никакого кода, невозможно объяснить, почему вы не получаете никаких данных. Это может быть проблема с используемым вами SQL, проблема с тем, как вы пытаетесь подключиться к DataGrid, или другая проблема, ни одну из которых нельзя вывести, глядя только на бесполезное изображение. См. Как задать вопрос и минимальный воспроизводимый пример , а затем отредактируйте свое сообщение, предоставив некоторые полезные подробности, чтобы мы могли попытаться помочь.
Вы не заполняете DataGridView
или любые другие элементы управления непосредственно из базы данных. Вы используете некоторую технологию доступа к данным для извлечения данных в какой-то список, и этот список является источником данных для сетки. Сначала вам следует изучить технологии доступа к данным в VB и WinForms. Вы можете использовать ванильный ADO.NET, как указано в первом комментарии выше, или вы можете создать типизированный DataSet
, или вы можете использовать Entity Framework, или вы можете использовать какой-либо другой ORM. Выбор за вами. Если у вас есть такой источник данных, его можно использовать для заполнения вашей сетки.
Обратите внимание, что создание типизированного набора данных, вероятно, добавит запись в таблицу, которую вы показали на снимке экрана, хотя я никогда не делал этого таким образом, поэтому я не совсем уверен.
SQL-сервер
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using connection As New SqlConnection(
"Server=localhost\SQLEXPRESS;" &
"Database=master;" &
"Trusted_Connection=True;")
Dim adapter As New SqlDataAdapter("select * from spt_values", connection)
Dim table As New DataTable
adapter.Fill(table)
DataGridView1.DataSource = table
End Using
End Sub
End Class
MySQL
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using connection As New MySqlConnection(
"server=localhost;" &
"port=3306;" &
"database=sakila;" &
"user=root;" &
"password=********;")
Dim adapter As New MySqlDataAdapter("select * from city", connection)
Dim table As New DataTable
adapter.Fill(table)
DataGridView1.DataSource = table
End Using
End Sub
End Class
Спасибо, приятель, я поиграюсь с этим. Я новичок в этом деле, изготовление инструментов — это мой набор навыков, но мне нравится пытаться этому научиться.
@Кевин, для SQL Server
будет примерно то же самое. Названия классов немного другие: SqlConnection
вместо MySqlConnection
. Я просто не смог опубликовать непроверенный код.
@KonstantinMakarov Вам не нужно вызывать Connection.Open() при использовании адаптера.Fill(ds)
В дополнение к предыдущему комментарию Fill
и Update
при необходимости откроют соединение и оставят его в том же состоянии, в котором оно было изначально. Это означает, что любому отдельному вызову Fill
или Update
не должен предшествовать вызов Open
при соединении. Однако если вы совершаете несколько вызовов, вам следует вызвать Open
и Close
самостоятельно, иначе соединение будет закрыто и снова открыто между вызовами Fill
или Update
.
Я установил «SQL Server 2022 Express Edition» и протестировал.
Круто, спасибо, ребята, сейчас поиграюсь с этим. Как только я разберусь с этим, все будет в порядке, но я пока не понимаю логики. Спасибо всем за конструктивную помощь и рекомендации, я очень ценю это.
Теперь я понял, спасибо всем. Еще один вопрос: если у меня есть текстовое поле, можно ли в нем отображать данные? то есть UserId, FirstName и Lastname.
@Кевин, во-первых, если этот ответ решил вашу проблему, примите его, нажав галочку. Во-вторых, не задавайте «еще один вопрос» в комментарии к ответу на другой вопрос. Это сайт вопросов и ответов, а не форум. Если у вас есть отдельный вопрос, задайте новый вопрос, и кто-нибудь сможет ответить на него другим ответом. Если вы считаете, что это часть одного и того же вопроса, вам следует изменить этот вопрос e4ed, но в данном случае это неуместно.
Следующие материалы могут представлять интерес: Заполнение DataSet из DataAdapter , youtube.com/watch?v=peiorDq5oF0 (я не смотрел, это результат быстрого поиска) и stackoverflow.com/a/76349235/10024425