3

問題:

DataGridView の内容を SQL Server データベース テーブルにダンプする必要があります。datagridview の読み込みは正常に行われており、問題はありません。そのデータをDBテーブルに取得する方法を理解するには、VB.NETに精通していないだけです。

コード: (今のところ)

    Dim connection As New Data.SqlClient.SqlConnection
    Dim dataAdapter As New Data.SqlClient.SqlDataAdapter
    Dim command As New Data.SqlClient.SqlCommand
    Dim dataSet As New Data.DataSet

    connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
    command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"

    dataAdapter.InsertCommand.Parameters.Add("@ServerName", SqlDbType.VarChar)
    dataAdapter.InsertCommand.Parameters.Add("@Property", SqlDbType.VarChar)
    dataAdapter.InsertCommand.Parameters.Add("@Value", SqlDbType.VarChar)
    dataAdapter.InsertCommand.Parameters.Add("@CaptureDate", SqlDbType.DateTime)

    For i As Integer = 0 To DataGridView.Rows.Count - 1
        dataAdapter.InsertCommand.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
        dataAdapter.InsertCommand.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
        dataAdapter.InsertCommand.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
        dataAdapter.InsertCommand.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
    Next

    connection.Open()
    command.Connection = connection
    dataAdapter.SelectCommand = command

ここで何が欠けていますか?テーブルに何も挿入されていません。どんな助けでも大歓迎です。私が言ったように、私は VB にあまり慣れていないので、気楽にやってください。

4

4 に答える 4

7

まあ、単に DataAdapter に追加するのではなく、コマンドを実行する必要があります。
また、今コーディングしたように、DataAdapter はまったく必要ありません。

Dim connection As New Data.SqlClient.SqlConnection
Dim command As New Data.SqlClient.SqlCommand

connection.ConnectionString = "Server= server; Database= DB; integrated security=true"
command.CommandText = "INSERT INTO <table> (Col1, Col2, Col3, Col4) VALUES (@Name, @Property, @Value, @Date)"

command.Parameters.Add("@ServerName", SqlDbType.VarChar)
command.Parameters.Add("@Property", SqlDbType.VarChar)
command.Parameters.Add("@Value", SqlDbType.VarChar)
command.Parameters.Add("@CaptureDate", SqlDbType.DateTime)
connection.Open()
command.Connection = connection

For i As Integer = 0 To DataGridView.Rows.Count - 1
    command.Parameters(0).Value = dgvServerConfig.Rows(i).Cells(0).Value
    command.Parameters(1).Value = dgvServerConfig.Rows(i).Cells(1).Value
    command.Parameters(2).Value = dgvServerConfig.Rows(i).Cells(2).Value
    command.Parameters(3).Value = dgvServerConfig.Rows(i).Cells(3).Value
    command.ExecuteNonQuery()
Next

ただし、これはデータベースを呼び出して、一度に 1 行ずつ挿入します。1 回の呼び出しで挿入/更新作業を解決するSqlDataAdapter.Updateメソッドを調べた方がよいと思います。

SqlDataAdapter.Update メソッドを使用するには、DataGridView を入力した時点で使用されているアダプターをグローバル変数に保存し、InsertCommand、UpdateCommand、および DeleteCommand を生成する SqlCommandBuilder を追加する必要があります。

    ' At form loading'
    Dim adapter As New OleDbDataAdapter()
    adapter.SelectCommand = New OleDbCommand("SELECT COL1, COL2,COL3,COL4 FROM TABLE", connection)
    Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
    connection.Open()
    Dim myTable As DataTable = New DataTable
    adapter.Fill(myTable)
    DataGridView.DataSource = myTable
    ....

    ' at grid save'
    Dim myTable = CType(DataGridView.DataSource, DataTable)
    adapter.Update(myTable)
于 2013-05-13T20:44:05.787 に答える
0

GridView 内の各オブジェクトについて、それを見つけてその値を決定する必要があります。たとえば、

DropDownList ddlToLoc = (DropDownList)gvMovesMod.Rows[0].FindControl("ddlToLoc");

次に、ddlToLoc の SelectedValue を決定し、データベースに挿入します。

于 2013-05-13T20:46:36.090 に答える
0

次を呼び出すことができます: command.ExecuteNonQueryDB にデータを挿入します。

詳細はこちら

于 2013-05-13T20:43:16.010 に答える