Как добавить номер автоинкремента в мой новый столбец VB.NET

Мой 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

Конец подписки

Это не совсем то, о чем вы спрашивали, но я лично считаю, что добавление автоинкремента в таблицу на уровне БД более надежно. Если у вас есть право манипулировать таблицей, рассмотрите возможность автоматического увеличения ID, как указано здесь: dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html

vahdet 17.10.2018 09:27

Конечно, наличие в вашем коде вычисляемого столбца автоинкремента - действительно плохая идея, если ваше приложение используется более чем одним пользователем в одной базе данных.

Steve 17.10.2018 09:38

как упоминалось выше, правильный способ - сделать ваше поле полем с автоматическим приращением в базе данных и позволить mySQL выполнять тяжелую работу за вас. Выполнение этого в приложении не является надежным - вы легко можете столкнуться с ситуацией, когда, если у вас есть 2 пользователя (или даже две запущенные копии приложения), тогда обе копии приложения будут пытаться выдать один и тот же идентификатор одновременно. , а затем у вас проблема с дубликатами. Централизуйте эту функцию в базе данных с помощью поля автоинкремента - это то, для чего она предназначена. Обычно подобные вещи объясняются в любом вводном руководстве по базам данных.

ADyson 17.10.2018 10:27

Возможно, данные уже имеют автоинкремент в моей таблице, но я просто хочу автоматически увеличить его в приложении с новым идентификатором столбца, который я добавил.

Jonathan Batac 17.10.2018 10:41

Я просто хочу создать собственный идентификатор в приложении.

Jonathan Batac 17.10.2018 10:57

Если у вас уже есть поле с автоинкрементом в вашей базе данных, зачем вам другое в вашем приложении? В этом нет никакого смысла. Какая у этого цель? Почему бы просто не использовать значение из базы данных вместо того, чтобы придумывать другое?

ADyson 17.10.2018 11:21

Я просто отображаю определенные данные в datagridview, на самом деле фактическое значение в базе данных уже находится в 20k записях.

Jonathan Batac 18.10.2018 02:47
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
7
2 963
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо того, чтобы добавлять несвязанный столбец к вашему 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

Теперь у вас есть столбец, готовый к работе при связывании, и вам не нужен дополнительный код для генерации значений.

Другие вопросы по теме