Добавить столбец в таблицу SQL и заполнить в таблице данных - PullRequest
0 голосов
/ 13 июня 2018

У меня есть приложение Windows Form с dataagridview.Я хочу добавить столбец во время выполнения (если пользователь хочет добавить больше столбца к нему).Поэтому по нажатию кнопки я хотел добавить столбец.Я добавил следующий код к событию, он добавляет столбец в представлении обозревателя серверов под списком столбцов таблиц, но не отображается в определении таблицы ни в окне источника данных (в списке столбцов под таблицей), ни в представлении данных.

 Imports System.Configuration
 Imports System.Data.SqlClient

 Public Class Form3
     Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       'TODO: This line of code loads data into the 'Small_databaseDataSet.newtable' table. You can move, or remove it, as needed.
       Me.NewtableTableAdapter.Fill(Me.Small_databaseDataSet.newtable)

     End Sub

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        AddColumn()
     End Sub

     Private Sub AddColumn()
          Dim connString As String = "Data Source=(localDb)\ProjectsV13;Initial Catalog=small database;Integrated Security=True"
          Dim dt As New DataTable

          Using conn As New SqlConnection(connString)

              Dim str As String = "ALTER TABLE newtable ADD " & TextBoxX1.Text & " INT null;"
              Using comm As New SqlCommand(str, conn)
              conn.Open()
              comm.ExecuteNonQuery()
          End Using

        End Using

        Validate()
        DataGridViewX1.Columns.Clear()
        NewtableTableAdapter.Update(Small_databaseDataSet.newtable)
        NewtableTableAdapter.Fill(Small_databaseDataSet.newtable)
        DataGridViewX1.DataSource = NewtableBindingSource

  End Sub

Конечный класс

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

DataReader используется для извлечения данных.Поскольку данные не извлекаются, в DataTable ничего не загружается, за исключением, может быть, возвращаемого значения успеха или неудачи.Использование операторов гарантирует, что ваши объекты закрыты и расположены правильно, даже если есть ошибка.

Private Sub AddColumn()
        Dim connString As String = ConfigurationManager.ConnectionStrings("USTDatabaseConnectionString").ConnectionString
        Dim dt As New DataTable
        Using conn As New SqlConnection(connString)
            Using comm As New SqlCommand("ALTER TABLE testTable ADD col1 INT;", conn)
                conn.Open()
                comm.ExecuteNonQuery()
            End Using
            Using com2 As New SqlCommand("Select * From testTable;", conn)
                Using reader As SqlDataReader = com2.ExecuteReader
                    dt.Load(reader)
                    conn.Close()
                End Using
            End Using
        End Using
        DataGridView1.DataSource = dt
    End Sub
0 голосов
/ 13 июня 2018

Измените эту строку кода:

' Add the keyword NULL and brackets around the column name
Dim comm As New SqlCommand("ALTER TABLE testTable ADD [col1] INT NULL", conn)

Если бы я хотел, чтобы новый столбец отображался автоматически, я бы повторно запросил базу данных, извлекая данные из этой таблицы и просто установив представление данныхисточник данных для набора результатов, например:

'I assume the datagridview name is DataGridView1
DataGridView1.Columns.Clear()
DataGridView1.DataSource = USTDatabaseDataSet
DataGridView1.DataMember = "testTable" 
DataGridView1.DataBind()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...