0

我的网络应用程序上有一个上传 excel 文件。当文件上传时,它应该被打开,然后将数据导入到一个 mysql 表中。它工作得很好,因为它可以很好地添加信息。但是有一个问题,我无法让重复检查正常工作的代码。部分原因是要使用的 excel 工作表没有任何可以用作唯一标识符的列。在 excel 表中,信息在整行中多次完全相同,只有一列或两列存在差异……我想我可以这样做: Select * FROM table_name WHERE table_col_1 = variable and table_col_2 = variable 2 等等...

我想通过这样做,我可以将行中每一列的值与导入值进行比较,如果它相同,它将跳过它......但是我不能完全理解它......也许我正在考虑它深入,有一种简单的方法可以做到这一点。以下是我正在使用的功能:

            Private Function PerFormUpdate(ByVal customer As String, ByVal bill_to As String, ByVal Contact As String, ByVal Company As String, ByVal firstName As String, ByVal mi As String, ByVal lastname As String, ByVal phone As String, ByVal altPhone As String, ByVal fax As String)
        Dim _db As New schoolEntities

        Dim command As MySqlCommand = _dbconn.CreateCommand()
        command.Parameters.AddWithValue("@Customer", customer)
        command.Parameters.AddWithValue("@Bill_to", bill_to)
        command.Parameters.AddWithValue("@Contact", Contact)
        command.Parameters.AddWithValue("@Company", Company)
        command.Parameters.AddWithValue("@First_Name", firstName)
        command.Parameters.AddWithValue("@M_I", mi)
        command.Parameters.AddWithValue("@Last_Name", lastname)
        command.Parameters.AddWithValue("@Phone", phone)
        command.Parameters.AddWithValue("@Alt_Phone", altPhone)
        command.Parameters.AddWithValue("@Fax", fax)

        command.CommandText = "SELECT * FROM quickbooks_imports WHERE Customer=@Customer, Bill_to=@Bill_to, Contact=@Contact, Company =@Company, First_Name=@First_Name, M_I=@M_I,  Last_Name=@Last_Name, Phone =@Phone, Alt_Phone=@Alt_Phone, Fax=@Fax"

        _dbconn.Open()

        Dim _mysqlReader As MySqlDataReader = command.ExecuteReader()
        _dbconn.Close()

        If Not _mysqlReader.HasRows Then
            Dim _UpdateItem As New quickbooks_imports
            Dim updateCommand As MySqlCommand = _dbconn.CreateCommand()

            _UpdateItem.Customer = customer
            _UpdateItem.Bill_to = bill_to
            _UpdateItem.Contact = Contact
            _UpdateItem.Company = Company
            _UpdateItem.First_Name = firstName
            _UpdateItem.M_I = mi
            _UpdateItem.Last_Name = lastname
            _UpdateItem.Phone = phone
            _UpdateItem.Alt_Phone = altPhone
            _UpdateItem.Fax = fax

            updateCommand.CommandText = "INSERT INTO quickbooks_imports (Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES (@Customer, @Bill_to, @Contact, @Company, @First_Name, @M_I, @Last_Name, @Phone, @Alt_Phone, @Fax)"
            updateCommand.Parameters.AddWithValue("@Customer", _UpdateItem.Customer)
            updateCommand.Parameters.AddWithValue("@Bill_to", _UpdateItem.Bill_to)
            updateCommand.Parameters.AddWithValue("@Contact", _UpdateItem.Contact)
            updateCommand.Parameters.AddWithValue("@Company", _UpdateItem.Company)
            updateCommand.Parameters.AddWithValue("@First_Name", _UpdateItem.First_Name)
            updateCommand.Parameters.AddWithValue("@M_I", _UpdateItem.M_I)
            updateCommand.Parameters.AddWithValue("@Last_Name", _UpdateItem.Last_Name)
            updateCommand.Parameters.AddWithValue("@Phone", _UpdateItem.Phone)
            updateCommand.Parameters.AddWithValue("@Alt_Phone", _UpdateItem.Alt_Phone)
            updateCommand.Parameters.AddWithValue("@Fax", _UpdateItem.Fax)



            'updateCommand.CommandText = "INSERT INTO EXCEL (id,Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES ('" & _UpdateItem.id & "','" & _UpdateItem.Customer & "','" & _UpdateItem.Bill_to & "','" & _UpdateItem.Contact & "','" & _UpdateItem.Company & "','" & _UpdateItem.First_Name & "','" & _UpdateItem.M_I & "','" & _UpdateItem.Last_Name & "','" & _UpdateItem.Phone & "','" & _UpdateItem.Alt_Phone & "','" & _UpdateItem.Fax & "') ON DUPLICATE KEY UPDATE Customer= '" & _UpdateItem.Customer & "' Bill_to= '" & _UpdateItem.Bill_to & "' Contact= '" & _UpdateItem.Contact & "' Company= '" & _UpdateItem.Company & "' First_Name= '" & _UpdateItem.First_Name & "' M_I= '" & _UpdateItem.M_I & "' Last_Name= '" & _UpdateItem.Last_Name & "' Phone= '" & _UpdateItem.Phone & "' Alt_Phone= '" & _UpdateItem.Alt_Phone & "' Fax= '" & _UpdateItem.Fax & "'"
            'updateCommand.CommandText = "INSERT INTO quickbooks_imports (Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES ('" & _UpdateItem.Customer & "','" & _UpdateItem.Bill_to & "','" & _UpdateItem.Contact & "','" & _UpdateItem.Company & "','" & _UpdateItem.First_Name & "','" & _UpdateItem.M_I & "','" & _UpdateItem.Last_Name & "','" & _UpdateItem.Phone & "','" & _UpdateItem.Alt_Phone & "','" & _UpdateItem.Fax & "') "
            _dbconn.Open()
            Try
                updateCommand.ExecuteNonQuery()
            Catch ex As Exception
                Dim _error As String = Nothing
                MsgBox(ex.Message)
            End Try


            _db.SaveChanges()
        Else
            Dim _NewItem As New quickbooks_imports
            _NewItem.Customer = customer
            _NewItem.Bill_to = bill_to
            _NewItem.Contact = Contact
            _NewItem.Company = Company
            _NewItem.First_Name = firstName
            _NewItem.M_I = mi
            _NewItem.Last_Name = lastname
            _NewItem.Phone = phone
            _NewItem.Alt_Phone = altPhone
            _NewItem.Fax = fax
            _db.quickbooks_imports.AddObject(_NewItem)
            _db.SaveChanges()
        End If
        _dbconn.Close()
        Return View()
    End Function

任何帮助将不胜感激...

4

2 回答 2

0
declare @tempExist varchar(50);
set @tempExist=null;

select @tempExist=[ColumnName1] from [TableName]
where [ColumnName1]=@ColumnName1 or [ColumnName2]= @ColumnName2  and so on..

if(@tempExist!=NULL)
Begin
Insert into [TableName] (...)
End

上面的代码是针对mssql的..有些语法可能是错误的..但这就是我的想法..

但这可能会给你提示......祝你好运!

于 2011-09-29T01:21:46.023 回答
0

尝试将数据从 excel 插入另一个(可能是临时表),然后将您需要的数据从附加表复制到目标表,例如 -

INSERT INTO table1 SELECT DISTINCT * FROM temp_table;
于 2011-09-29T07:34:03.923 回答