sql - 如何直接从excel更新sql表?

标签 sql sql-server database tsql

我有一个 sql 数据库,我可以连接到 excel 电子表格。但是,当我直接从 excel 更新表格时,它并没有更新数据库,一旦我点击刷新,所有输入的数据就不再在 excel 表格中了

是否可以在不使用任何查询的情况下从 excel 更新 sql 数据库?

最佳答案

有很多方法可以做到这一点。我推荐这样的东西,将数据从 Excel 推送到 SQL Server。

Sub ButtonClick()
'TRUSTED CONNECTION
    On Error GoTo errH
   
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strPath As String
    Dim intImportRow As Integer
    Dim strFirstName, strLastName As String
   
    Dim server, username, password, table, database As String
   
   
    With Sheets("Sheet1")
           
            server = .TextBox1.Text
            table = .TextBox4.Text
            database = .TextBox5.Text
           
           
            If con.State <> 1 Then
       
                con.Open "Provider=SQLOLEDB;Data Source=" & server & ";Initial Catalog=" & database & ";Integrated Security=SSPI;"
                'con.Open
       
            End If
            'this is the TRUSTED connection string
           
            Set rs.ActiveConnection = con
           
            'delete all records first if checkbox checked
            If .CheckBox1 Then
                con.Execute "delete from tbl_demo"
            End If
       
            'set first row with records to import
            'you could also just loop thru a range if you want.
            intImportRow = 10
           
            Do Until .Cells(intImportRow, 1) = ""
                strFirstName = .Cells(intImportRow, 1)
                strLastName = .Cells(intImportRow, 2)
               
                'insert row into database
                con.Execute "insert into tbl_demo (firstname, lastname) values ('" & strFirstName & "', '" & strLastName & "')"
               
                intImportRow = intImportRow + 1
            Loop
           
            MsgBox "Done importing", vbInformation
           
            con.Close
            Set con = Nothing
   
    End With
   
Exit Sub

errH:
    MsgBox Err.Description
End Sub

您也可以试试这个,它使用 Where 子句。

Sub InsertInto()

'Declare some variables
Dim cnn As adodb.Connection
Dim cmd As adodb.Command
Dim strSQL As String

'Create a new Connection object
Set cnn = New adodb.Connection

'Set the connection string
cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Northwind;Data Source=Excel-PC\SQLEXPRESS"
'cnn.ConnectionString = "DRIVER=SQL Server;SERVER=Excel-PC\SQLEXPRESS;DATABASE=Northwind;Trusted_Connection=Yes"


'Create a new Command object
Set cmd = New adodb.Command

'Open the Connection to the database
cnn.Open

'Associate the command with the connection
cmd.ActiveConnection = cnn

'Tell the Command we are giving it a bit of SQL to run, not a stored procedure
cmd.CommandType = adCmdText

'Create the SQL
strSQL = "UPDATE TBL SET JOIN_DT = '2013-01-22' WHERE EMPID = 2"

'Pass the SQL to the Command object
cmd.CommandText = strSQL


'Execute the bit of SQL to update the database
cmd.Execute

'Close the connection again
cnn.Close

'Remove the objects
Set cmd = Nothing
Set cnn = Nothing

End Sub

关于sql - 如何直接从excel更新sql表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42732802/

相关文章:

sql-server - 如何编辑存储过程?

java - 外键也是主键的一部分

php - 显示具有多个需要累加的值的左连接

sql - 如何 INNER JOIN 4 个表?

mysql - SQL如何通过特定列将两个表连接在一起?

sql - SELECT MAX of COUNT

SQL : Retrieve inserted row IDs array/table

sql - 如何在 TimescaleDB 中的一张表上创建多个连续聚合?

C# MVC - 在 LINQ 查询中使用 LIKE

mysql - 如何实现从返回多条记录的查询开始返回具有多列的单个记录的 SQL 查询?