DataSet, DataAdapter, нет первичного ключа dataTable
Итак, у меня есть это:
Dim sql As String = "SELECT * FROM Articles"
dAdapter = New OleDbDataAdapter(sql, connection)
dSet = New DataSet("tempDatatable")
With connection
.Open()
dAdapter.Fill(dSet, "Articles_table")
.Close()
End With
With DataGridView1
.DataSource = dSet
.DataMember = "Articles_table"
End With
И я задаюсь вопросом, существует ли какой-либо возможный способ определить первый столбец в качестве первичного ключа. Я огляделся, но все используют ручной datatable, чтобы заполнить datagrid. Поскольку я использую базу данных, я не знаю, как установить первичный ключ оттуда. Мне нужна помощь.
3 ответа:
Вы можете добавить первичный ключ в таблицу данных, используя что-то вроде этого:
var table = dSet.Tables["Articles_table"]; table.PrimaryKey = new DataColumn[] { table.Columns[0] };
Извините, просто понял, что вопрос был помечен vb.net, а не c#. VB.net было бы:
Dim table = dSet.Tables("Articles_table") table.PrimaryKey = New DataColumn() {table.Columns(0)}
Вы должны установить
DataAdapter
MissingSchemaAction
toAddWithKey
:var table = new DataTable(); using(var con = new SqlConnection(connectionString)) using (var da = new SqlDataAdapter("SELECT * FROM Articles", con)) { da.MissingSchemaAction = MissingSchemaAction.AddWithKey da.Fill(table); }
Edit: VB.NET:
Теперь необходимые столбцы и первичная ключевая информация для завершения схемы автоматически добавляются вDim table = New DataTable() Using con = New SqlConnection(connectionString) Using da = New SqlDataAdapter("SELECT * FROM Articles", con) da.MissingSchemaAction = MissingSchemaAction.AddWithKey da.Fill(table) End Using End Using
DataTable
.