将Excel数据导入SQL Server数据库

GMCadiom

我想通过对话框选择Excel图表并将其导入到SQL Server数据库中,然后自动将其保存到SQL Server表中。我想通过我创建的子项来生成记录ID。

产生的子程式MembersID为:

Public MyNewMembersID As Integer
Public Sub Code_Members()
    Dim dt As New DataTable
    Dim da As New SqlDataAdapter("select max(MembersID) from Members", Con)
    da.Fill(dt)
    If IsDBNull(dt(0)(0)) = True Then
        MyNewMembersID = 1
    Else
        MyNewMembersID = dt(0)(0) + 1
    End If

这是我的代码,错误消息MembersID不能为NULL:

Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Configuration

Public Class MembersImport
    Private Sub MembersImport_FilePath_Button_Click(sender As Object, e As EventArgs) Handles MembersImport_FilePath_Button.Click
        MembersImport_OpenFileDialog.ShowDialog()
    End Sub

    Private Sub MembersImport_ImportFile_Button_Click(sender As Object, e As EventArgs) Handles MembersImport_ImportFile_Button.Click
        If MembersImport_FilePath_TextBox.Text = "" Then
            MsgBox("Please Select File Excel", MsgBoxStyle.RetryCancel, "File Not Found")
            MembersImport_FilePath_Button.PerformClick()
        Else
            Dim con_excel As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & MembersImport_FilePath_TextBox.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=Yes""")
            con_excel.Open()
            Dim query_excel As String = "Select * from [Sheet1$]"
            Dim cmd As OleDbCommand = New OleDbCommand(query_excel, con_excel)
            Dim rd As OleDbDataReader
            Dim con_sql As New SqlConnection()
            Dim con_sqlDB As String = "Data Source=(localdb)\ProjectsV13;Initial Catalog=Euro_SQL_Server;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
            con_sql.ConnectionString = con_sqlDB
            con_sql.Open()
            Using BulkCopy As SqlBulkCopy = New SqlBulkCopy(con_sql)
                BulkCopy.DestinationTableName = "dbo.Members"
                Try
                    rd = cmd.ExecuteReader
                    BulkCopy.WriteToServer(rd)
                    rd.Close()
                    con_sql.Close()
                    MsgBox("تم الاسترداد بنجاح")
                    MembersImport_FilePath_TextBox.Text = ""
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            End Using
            Load_Members()
            Me.Close()
        End If
    End Sub

    Private Sub MembersImport_OpenFileDialog_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MembersImport_OpenFileDialog.FileOk
        MembersImport_FilePath_TextBox.Text = MembersImport_OpenFileDialog.FileName
    End Sub
End Class

这是我的表结构:

CREATE TABLE [dbo].[Members] 
(
    [MembersID] INT NOT NULL,
    [MembersName] NVARCHAR(MAX) NULL,
    [MembersGender] NVARCHAR(MAX) NULL,
    [MembersPhone] NVARCHAR(MAX) NULL,
    [MembersAddress] NVARCHAR(MAX) NULL,
    [MembersMembershiping] BIT NULL,
    [MembersMembershipNum] NVARCHAR (MAX) NULL,
    [MembersMembershipValidityFrom] DATE NULL,
    [MembersMembershipValidityTo] DATE NULL,
    [MembersSubscriberSystem] NVARCHAR(MAX) NULL,
    [MembersCarBrand] NVARCHAR(MAX) NULL,
    [MembersCarModel] NVARCHAR(MAX) NULL,
    [MembersCarManufacturingYear] NVARCHAR(MAX) NULL,
    [MembersCarNum] NVARCHAR(MAX) NULL,
    [MembersChassisNum] NVARCHAR(MAX) NULL,
    [MembersCarColor] NVARCHAR(MAX) NULL,
    [MembersNotes] NVARCHAR(MAX) NULL,
    [ActionBy] NVARCHAR(MAX) NULL,

    PRIMARY KEY CLUSTERED ([MembersID] ASC)
);

因此,我所需要的只是将生成的Excel中的数据导入MembersID到SQL Server数据库中

vbjay

您不会在代码中生成ID。通过使ID字段成为身份字段来生成ID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章