参数化的SQL查询不工作

参数化的SQL查询不工作

问题描述:

我试图让这个查询工作,但它不工作:参数化的SQL查询不工作

strQuery = "Insert Into StudentInfo (StudentSurname, StudentNumber) Values (@Surname, @StudentNo) Where [email protected]" 

任何帮助表示赞赏。

+0

什么不工作? INSERT查询没有WHERE子句 – Plutonix

+0

那么我怎样才能将新的StudentSurname和新的StudentNumber插入StudentName @Name的学生?谢谢 – Quattro

+0

INSERT ==添加新记录。更新==改变现有数据 – Plutonix

如果插入新记录,WHERE子句没有任何意义。它也不是有效的SQL语法。

你可以尝试以下方法:

strQuery = "Insert Into StudentInfo (StudentName, StudentSurname, StudentNumber) Values (@Name, @Surname, @StudentNo)" 

要更新现有的记录,使用UPDATE语句:

strQuery = "Update StudentInfo SET [email protected], [email protected] WHERE [email protected]" 

WHERE子句应该有StudentNumber(而不是StudentName),因为这将是每个学生都独一无二。名称可能会重复,并会导致更新错误的记录。

+0

嗨,我很确定我需要现在就用更新语句来做。你能纠正这个声明:cmd.CommandText =(更新StudentInfo设置StudentSurname = @姓氏,studentnumber = @ studentno where studentname = @ name“)它说不正确的语法附近”=“谢谢 – Quattro

+0

用UPDATE语句更新。 –

以下显示如果使用SQL-Server将OleDb更改为SqlClient,则使用OleDb数据提供程序执行更新,例如, SqlConnection和SqlCommand。注意如何设置需要Framework 3.5或更高版本的命令文本。

Public Sub UpdateRow(
    ByVal StudentSurname As String, 
    ByVal StudentNumber As Integer, 
    ByVal StudentName As String) 

    Using cn As New OleDbConnection("Your connection string") 
     Using cmd As New OleDbCommand("", cn) 
      cmd.CommandText = 
       <SQL> 
        UPDATE StudentInfo 
        SET 
         StudentSurname = @StudentSurname, 
         StudentNumber = @StudentNumber 
        WHERE 
         StudentName = @StudentName 
       </SQL>.Value 

      cmd.Parameters.AddWithValue("@StudentSurname", StudentSurname) 
      cmd.Parameters.AddWithValue("@StudentNumber", StudentNumber) 
      cmd.Parameters.AddWithValue("@StudentName", StudentName) 

      cn.Open() 

      Dim Affected As Integer = CInt(cmd.ExecuteNonQuery()) 
      If Affected <> 1 Then 
       ' we have a problem 
      Else 
       ' update successful 
      End If 

     End Using 
    End Using 
End Sub