Мой Datagridview содержит данные из моей базы данных, и я добавил новый столбец, но я хочу вставить номер автоматического увеличения в этот столбец, как это сделать.
Вот мой код для моего недавно добавленного столбца
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim idcolumn As New DataGridViewTextBoxColumn
With idcolumn
.HeaderText = "ID"
.Name = "ID"
End With
Dim count as Integer = "1"
count = Val(count) +1
With DataGridView1
.Columns.Add(idcolumn)
End With
Конец подписки
Конечно, наличие в вашем коде вычисляемого столбца автоинкремента - действительно плохая идея, если ваше приложение используется более чем одним пользователем в одной базе данных.
как упоминалось выше, правильный способ - сделать ваше поле полем с автоматическим приращением в базе данных и позволить mySQL выполнять тяжелую работу за вас. Выполнение этого в приложении не является надежным - вы легко можете столкнуться с ситуацией, когда, если у вас есть 2 пользователя (или даже две запущенные копии приложения), тогда обе копии приложения будут пытаться выдать один и тот же идентификатор одновременно. , а затем у вас проблема с дубликатами. Централизуйте эту функцию в базе данных с помощью поля автоинкремента - это то, для чего она предназначена. Обычно подобные вещи объясняются в любом вводном руководстве по базам данных.
Возможно, данные уже имеют автоинкремент в моей таблице, но я просто хочу автоматически увеличить его в приложении с новым идентификатором столбца, который я добавил.
Я просто хочу создать собственный идентификатор в приложении.
Если у вас уже есть поле с автоинкрементом в вашей базе данных, зачем вам другое в вашем приложении? В этом нет никакого смысла. Какая у этого цель? Почему бы просто не использовать значение из базы данных вместо того, чтобы придумывать другое?
Я просто отображаю определенные данные в datagridview, на самом деле фактическое значение в базе данных уже находится в 20k записях.






Вместо того, чтобы добавлять несвязанный столбец к вашему DataGridView, добавьте дополнительный DataColumn к вашему DataTable. Это может быть установлено на автоматическое приращение, например
Dim table As New DataTable
Using adapter As New MySqlDataAdapter("SELECT * FROM MyTable", "connection string here")
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
adapter.SelectCommand.Connection.Open()
'Get the schema from the database without the data.
adapter.FillSchema(table, SchemaType.Source)
'Add an auto-incrementing column to the table.
With table.Columns.Add("ID", GetType(Integer))
.AutoIncrementSeed = 1
.AutoIncrementStep = 1
.AutoIncrement = True
End With
'Get the data.
adapter.Fill(table)
End Using
Теперь у вас есть столбец, готовый к работе при связывании, и вам не нужен дополнительный код для генерации значений.
Это не совсем то, о чем вы спрашивали, но я лично считаю, что добавление автоинкремента в таблицу на уровне БД более надежно. Если у вас есть право манипулировать таблицей, рассмотрите возможность автоматического увеличения ID, как указано здесь: dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html