none
Problema con dati inseriti in una TextBox!

    Question

  • Ciao a tutti eccomi ancora con un altro problema sembra essere una cosa banale ma per me non lo è per niente :)

    allora c'ho delle Textbox dove l'utente inserira dei dati e con molta probabilità ci saranno caratteri di tipo "",<>, ', ( ). 

    questo fa che al momento di premere il pulsante mi dia degli errori, dovuto a che faccio il update, insert in una tabella di un db in locale .... come posso soluzionare tutto ciò? 

    grazie

    Wednesday, August 21, 2013 1:39 PM

Answers

  • Un piccolo esempio

    La proprietà Text della TextBox che contiene i caratteri particolari, viene passata al parametro di un sqlCommand e nel db la stringa viene salvata in un campo di tipo nvarchar, senza problemi.

    Public Class Form3
        Sub ins(p1 As String)
            Dim conn As New SqlClient.SqlConnection("Data Source=PCMario\SQLEXPRESS;Initial Catalog=DBProva;Integrated Security=True")
            Dim comm As New SqlClient.SqlCommand
            comm.Parameters.Add(New SqlClient.SqlParameter("@p1", p1))
            comm.CommandType = CommandType.Text
            comm.CommandText = "Insert into Table_1 (NomeCLiente) VALUES (@p1)"
            comm.Connection = conn
            conn.Open()
            comm.ExecuteNonQuery()
            conn.Close()
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ins(TextBox1.Text)
        End Sub
    End Class

    Io sto usando MSSqlServer 2012 Express e VS 2012 e Framework 4.5

    Ciao.


    mario formosa



    • Edited by Mario Formosa Wednesday, August 21, 2013 5:00 PM
    • Marked as answer by kokuxx Thursday, August 22, 2013 11:14 AM
    Wednesday, August 21, 2013 4:55 PM

All replies

  • Ciao, se usi un DB MsSqlserver dove solitamente il delimitatore di stringa è un ' (apostrofo), dovresti, se il tuo valore stringa contiene apostrofi, raddoppiarli.

    Per esempio se il tuo valore è :A45'7s6''BB devi trasformarlo prima di passarlo alla query di insert/update in :A45''7s6''''BB. Come vedi ogni apostrofo diventa doppio apostrofo.

    Ma forse hai una versione un po' datata degli strumenti, perché oggi mi pare che questi problemi non ci siano più.

    Ciao.


    mario formosa


    Wednesday, August 21, 2013 4:29 PM
  • Un piccolo esempio

    La proprietà Text della TextBox che contiene i caratteri particolari, viene passata al parametro di un sqlCommand e nel db la stringa viene salvata in un campo di tipo nvarchar, senza problemi.

    Public Class Form3
        Sub ins(p1 As String)
            Dim conn As New SqlClient.SqlConnection("Data Source=PCMario\SQLEXPRESS;Initial Catalog=DBProva;Integrated Security=True")
            Dim comm As New SqlClient.SqlCommand
            comm.Parameters.Add(New SqlClient.SqlParameter("@p1", p1))
            comm.CommandType = CommandType.Text
            comm.CommandText = "Insert into Table_1 (NomeCLiente) VALUES (@p1)"
            comm.Connection = conn
            conn.Open()
            comm.ExecuteNonQuery()
            conn.Close()
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ins(TextBox1.Text)
        End Sub
    End Class

    Io sto usando MSSqlServer 2012 Express e VS 2012 e Framework 4.5

    Ciao.


    mario formosa



    • Edited by Mario Formosa Wednesday, August 21, 2013 5:00 PM
    • Marked as answer by kokuxx Thursday, August 22, 2013 11:14 AM
    Wednesday, August 21, 2013 4:55 PM
  • ciao, io invece sto utilizzando un database sdf in locale , avevo bisogno di poche tabelle allora h' optato per utilizzare  Microsoft SQL Server Compact 4.0. Tutto funzionava finche sono stati inseriti quelli caratteri anzi no, ho controllato un altra volta e a quanto pare va in conflitto solo quando vengono inseriti i singoli apici (') avevi ragione!

    comunque penso che tutto andra a posto con un replace cambio il singolo apice per il doppio :)

    grazie

    Thursday, August 22, 2013 11:14 AM