2016-12-16 4 views
-1

Я обнаружил ошибку в cmd.ExecuteNonQuery() при использовании INSERT INTO:INSERT INTO - cmd.ExecuteNonQuery() - VB.Net

Необработанное исключение 'System.Data.SqlClient.SqlException' типа произошел в System.Data.dll

Дополнительная информация: Неправильный синтаксис рядом с 'https:'.

Рад, если кто-то может помочь.

Imports System.Data.SqlClient 

    Public Class Form1 
     Dim con As New SqlConnection 

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

      WebBrowser1.Navigate(url) 

      While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete 
       Application.DoEvents() 
      End While 

      RichTextBox1.Text = WebBrowser1.DocumentText 

      con.Open() 
      Dim cmd As New SqlCommand(("INSERT INTO tTempList (ExtData) VALUES('" & RichTextBox1.Text & "')"), con) 
      cmd.ExecuteNonQuery() 
      con.Close() 
     End Sub 

     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      con.Connectionstring = "Server=SURFACEPRO\SQLEXPRESS;Initial Catalog=PropApp;Integrated Security=True" 
     End Sub 

    End Class 
+0

Я думаю, что RichTextBox1.Text имеет некоторый недопустимый Charater by.which запрос может excute .please выбрать запрос во время работы в режиме отладки. Затем выполните этот запрос в sql .check, что происходит. Я думаю, вы получите решение. –

+0

Спасибо за подсказку. Попробуем и обновим. – Toh

+0

Используйте параметры, а также @Toh. Ну стоит того, в конце концов. – Bugs

ответ

0

Я предполагаю, что у вас есть «где-то в вашем текстовом поле». Вы всегда должны использовать sqlparameters, чтобы избежать таких ошибок и SQL-инъекций

+0

Спасибо за подсказку. попытается обновить исход. – Toh

3

Используйте параметры Sql!

Если вы будете использовать параметры, вы никогда не столкнетесь с такими проблемами. Кроме того, параметры избавят вас от возможной инъекции Sql.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    WebBrowser1.Navigate(url) 
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete 
     Application.DoEvents() 
    End While 
    RichTextBox1.Text = WebBrowser1.DocumentText 

    Using connection As New SqlConnection() 
     connection.Open() 
     Dim query As String = "INSERT INTO tTempList (ExtData) VALUES (@ExtData)" 
     Dim parameter As New SqlParameter With 
     { 
      .ParameterName = "@ExtData", 
      .SqlDbType = SqlDbType.VarChar, 
      .Value = RichTextBox1.Text 
     } 

     Usinig command As New SqlCommand(query, conn) 
      command.Parameters.Add(parameter) 
      command.ExecuteNonQuery() 
     End Using 
    End Using 

End Sub 
+0

Спасибо за подсказку и помощь. попытается обновить результат. – Toh

+0

Определенно используйте этот пример, который Фабио был доволен, чтобы составить @Toh. Сэкономит вам массу неприятностей. – Bugs

+0

Спасибо, спасибо. – Toh

0

Этот код работа для меня ...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    WebBrowser1.Navigate(url) 
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete 
     Application.DoEvents() 
    End While 
    RichTextBox1.Text = WebBrowser1.DocumentText 

    Using connection As New SqlConnection() 
     connection.Open() 
     Dim query As String = "INSERT INTO tTempList (ExtData,oCategory,oSubcategory) VALUES (@ExtData,@oCategory,@oSubcategory)" 

     Using Command As New SqlCommand(query, con) 

      Command.Parameters.Add("@ExtData", SqlDbType.VarChar) 
      Command.Parameters("@ExtData").Value = RichTextBox1.Text 
      Command.Parameters.Add("@oCategory", SqlDbType.VarChar) 
      Command.Parameters("@oCategory").Value = CmbCategory.Text 
      Command.Parameters.Add("@oSubcategory", SqlDbType.VarChar) 
      Command.Parameters("@oSubcategory").Value = cmbSubcategory.Text 

      Command.ExecuteNonQuery() 
     End Using 
    End Using 

End Sub 

Спасибо Фабио за вашу доброту, чтобы руководить. Спасибо Зак и Jinx88909 за советы.

Смежные вопросы