【问题标题】:INSERT INTO SELECT using vb.net Can't Insert使用 vb.net 插入到选择中无法插入
【发布时间】:2017-01-18 09:25:22
【问题描述】:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Con.Open()
    Dim Str As String = "INSERT INTO db (ID,companyname,companyaddress,companycontact,contactperson,contactnumber,UserLogin,mDate) SELECT @ID,@companyname,@companyaddress,@companycontact,@contactperson,@contactnumber,@UserLogin,@mDate FROM db WHERE Userlogin = @Userlogin"

    Dim Cmd As New OleDbCommand
    With Cmd

        .CommandText = Str

        .Parameters.AddWithValue("@ID", f1.Text)
        .Parameters.AddWithValue("@companyname", f2.Text)
        .Parameters.AddWithValue("@companyaddress", f3.Text)
        .Parameters.AddWithValue("@companycontact", f4.Text)
        .Parameters.AddWithValue("@contactperson", f5.Text)
        .Parameters.AddWithValue("@contactnumber", f6.Text)
        .Parameters.AddWithValue("@UserLogin", f12.Text)
        .Parameters.AddWithValue("@mDate", DateTimePicker1.Text)
        .Connection = Con

        .ExecuteNonQuery()
    End With
    If Cmd.ExecuteNonQuery() Then
        Con.Close()
        MessageBox.Show("New Record is Added successfully.", "Record Saved")
        Call clear()

    Else

        MsgBox("Could Not Insert Record!!! ", "Already Entered")
        Return
    End If
End Sub

【问题讨论】:

  • 欢迎来到 SO!你试过什么了?为了帮助我们帮助您,请添加Minimal, Complete, and Verifiable example 请添加一些上下文来解释代码。
  • 有错误吗?我会考虑使用.Parameters.Add("@param", SqlDbType).Value = 并明确设置每个SqlDataType
  • 我得到了解决方案,谢谢您的帮助

标签: vb.net ms-access select insert


【解决方案1】:

你必须传递日期

.Parameters.AddWithValue("@mDate", DateTimePicker1.Value)

【讨论】:

    【解决方案2】:

    调用 ExecuteNonQuery() 方法时是否遇到任何错误? 我检查了你的代码,我有两个 cmets:
    (1) 您在代码中调用了 ExecuteNonQuery() 两次:
    +------------------------+
    '第一次通话
    .ExecuteNonQuery()
    结束于
    '第二次通话
    If Cmd.ExecuteNonQuery() Then
    +------------------------+
    您是否故意调用该方法两次?
    2.在调用Cmd.ExecuteNonQuery()方法之前确保连接已经打开。

    如果您仍然遇到问题,我在这里发现了一个相关问题,其中包含一些有价值的信息: How can I Insert data into SQL Server using VBNet

    我希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我不明白您为什么要使用 SELECT?我想你想这样做:

      INSERT INTO db(ID,companyname,companyaddress,companycontact,contactperson,contactnumber,UserLogin,mDate) 值(@ID,@companyname,@companyaddress,@companycontact,@contactperson,@contactnumber,@UserLogin,@mDate)

      【讨论】:

      • 出于复制目的,这就是为什么我尝试使用 insert into select 来避免重复输入
      • 为避免这种情况,请尝试 REPLACE INTO 而不是 INSERT INTO。如果主键存在,MySQL会先删除这一行,然后进行正常的插入。
      • 它说无效的 SQL 语句
      • 好吧,我想,你正在使用 MySQL。对于 MSSQL,使用您的主键(我认为是@id)在 INSERT 前面添加一个 DELETE,如下所示: DELETE FROM db WHERE ID=@ID; INSERT INTO db(ID,companyname,companyaddress,companycontact,contactperson,contactnumber,UserLogin,mDate) VALUES (@ID,@companyname,@companyaddress,@companycontact,@contactperson,@contactnumber,@UserLogin,@mDate)
      • 我正在使用 ms access 2010
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      相关资源
      最近更新 更多