2016-03-14 2 views
0

Я пытаюсь получить этот запрос, чтобы работать, но это не работает:параметризованных 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 == добавить новую запись. UPDATE == изменить существующие данные – Plutonix

ответ

0

Если вы вставляете новую запись, предложение 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]" 

ИНЕКЕ должен иметь StudentNumber (вместо StudentName), так как это было бы уникальный для каждого студента. Имена могут быть дублирующими и приводить к обновлению неправильных записей.

+0

Привет, я уверен, что мне нужно сделать это с помощью инструкции обновления. Не могли бы вы исправить это заявление для меня: cmd.CommandText = (Update StudentInfo Set StudentSurname = @ surname, studentnumber = @ studentno where studentname = @ name ") он говорит о некорректном синтаксисе рядом с" = "спасибо – Quattro

+0

Обновлено с помощью инструкции UPDATE. –

0

Ниже показано выполнение обновления с использованием поставщика данных OleDb, если вы работаете с изменением SQL-сервера OleDb на SqlClient, например. 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 
Смежные вопросы