복붙노트

[SQL] VB에서 SQL 명령에 매개 변수를 "@"를 사용하는 방법

SQL

VB에서 SQL 명령에 매개 변수를 "@"를 사용하는 방법

나는 VB에서, 텍스트 상자에 데이터에서 내 SQL 데이터베이스를 업데이트하기 위해이 코드가 있습니다. 텍스트가 틱 마크 '또는 견적을 포함하는 경우에 나는 여기에 내가 무엇을 가지고 등, "파라미터를 사용해야합니다

dbConn = New SqlConnection("server=.\SQLEXPRESS;Integrated Security=SSPI; database=FATP")
    dbConn.Open()

    MyCommand = New SqlCommand("UPDATE SeansMessage SET Message = '" & TicBoxText.Text & _
                                            "'WHERE Number = 1", dbConn)

    MyDataReader = MyCommand.ExecuteReader()
    MyDataReader.Close()
    dbConn.Close()

그리고 이것은 내가 그 아니라 모든 이해하지 않는 웹에 본 것을에서 매개 변수를 설정하는 내 절름발이의 시도이다.

dbConn = New SqlConnection("server=.\SQLEXPRESS;Integrated Security=SSPI; database=FATP")
    dbConn.Open()

    MyCommand = New SqlCommand("UPDATE SeansMessage SET Message = @'" & TicBoxText.Text & _
                                            "'WHERE Number = 1", dbConn)

    MyDataReader = MyCommand.ExecuteReader()
    MyDataReader.Close()
    dbConn.Close()

당신이 어떻게해야합니까? 나는이 코드를 실행하면 텍스트 상자에있는 '표시가있는 경우 원인, 그것은 충돌합니다.

해결법

  1. ==============================

    1.당신은 바비 테이블을 피하는 옳은 길을하지만, @ 매개 변수에 대한 이해는 불완전하다.

    당신은 바비 테이블을 피하는 옳은 길을하지만, @ 매개 변수에 대한 이해는 불완전하다.

    명명 된 매개 변수는 프로그래밍 언어의 변수처럼 행동 : 첫째, 당신은 당신의 SQL 명령에서 사용하고 다음과 같이 당신의 VB.NET 또는 C # 프로그램에서 자신의 값을 제공 :

    MyCommand = New SqlCommand("UPDATE SeansMessage SET Message = @TicBoxText WHERE Number = 1", dbConn)
    MyCommand.Parameters.AddWithValue("@TicBoxText", TicBoxText.Text)
    

    명령의 텍스트가되었다 방법을 참고 자기 - 포함되지 : 사용자가 자신의 명령을 삽입하여 SQL을 깰 수 있도록 더 이상 텍스트 상자에서 텍스트의 값에 따라 달라집니다. @TicBoxText 명령의 텍스트의 값을 의미 변수의 이름이되었다; AddWithValue에 대한 호출 값을 제공합니다. 그 후, 당신의가 ExecuteReader은 갈 준비가되어 있습니다.

  2. ==============================

    2.여기 개선은 여러 가지가있을 수 있습니다 :

    여기 개선은 여러 가지가있을 수 있습니다 :

    Using dbConn As New SqlConnection("server=.\SQLEXPRESS;Integrated Security=SSPI; database=FATP"), _
          MyCommand As SqlCommand("UPDATE SeansMessage SET Message = @Message WHERE Number = 1", dbConn)
    
        'Make sure to use your exact DbType (ie: VarChar vs NVarChar) and size
        MyCommand.Parameters.Add("@Message", SqlDbType.VarChar).Value = TicBoxText.Text
    
        dbConn.Open()
        MyCommand.ExecuteNonQuery() ' don't open a data reader: just use ExecuteNonQuery
    End Using 'Using block will close the connection for you
    
  3. from https://stackoverflow.com/questions/11139791/how-to-use-parameters-in-an-sql-command-in-vb by cc-by-sa and MIT license