none
[SqlException (0x80131904): 遺漏字元字串 ')' 後面的引號。 接近 ')' 之處的語法不正確。] RRS feed

  • 問題

  • 各位先進們...

    Protected Sub BT_新增_Click(sender As Object, e As EventArgs) Handles BT_新增.Click
        Dim myMessage As String
        Dim JavaScript As String
        Dim 欄位, 資料 As String
        Dim 批號 As String

        批號 = Me.批號.Text
        Conn.Open()
        cmd.Connection = Conn
        cmd.CommandText = "SELECT * FROM NiData WHERE NiData_批號 = '" & 批號 & "'"
        Response.Write(cmd.CommandText)
        dr = cmd.ExecuteReader()
        If dr.Read() Then
            myMessage = "資料庫裡已有此筆資料了!\n【批號】:" & 批號
            JavaScript = "<script language='javascript'>window.alert('" & myMessage & "');</script>"
            Me.ClientScript.RegisterStartupScript(Me.GetType, "msg", JavaScript)
            dr.Close()
            Conn.Close()
            Exit Sub
        End If
        dr.Close()
        Conn.Close()

        欄位 = "NiData_批號,NiData_卷號,NiData_品名,NiData_投入米數,NiData_生產米數"
        資料 = "'" & 批號 & "','" & 卷號.Text & "','" & 品名.Text & "','" & 投入米數.Text & "','" & 生產米數.Text & "'"

        Conn.Open()
        cmd.Connection = Conn
        cmd.CommandText = "INSERT INTO NiData (" & 欄位 & ") VALUES(" & 資料 & ")"
        Ins_SQL.Text = cmd.CommandText
        Response.Write(cmd.CommandText)
        dr = cmd.ExecuteReader()
        dr.Close()
        Conn.Close()

        myMessage = "新增資料完成!"
        JavaScript = "<script language='javascript'>window.alert('" & myMessage & "');</script>"
        Me.ClientScript.RegisterStartupScript(Me.GetType, "msg", JavaScript)
        dr.Close()
        Conn.Close()

        Exit Sub
    End Sub

    還麻煩各位幫忙一下!!!

    2019年10月31日 上午 07:36

所有回覆

  • 1. 組出來的語法是有問題的

    2.使用者填入的資料,不該拿來組SQL字串,會有嚴重的SQL Injection問題

    (您寫了了個漏洞讓駭客隨意完你的資料庫、甚至主機,主機整台清掉都有可能)

    趕快去了解,什麼是SQL Injection,並且改成使用Parameter的方式把使用者輸入的資料套入


    topcat(姍舞之間的極度凝聚)
    http://www.dotblogs.com.tw/topcat
    世界上有兩樣東西分享給別人後,不但不會變少,還會變更多:
    一個是快樂,另一個是知識~ 分享...是知識累積的開始...

    2019年10月31日 上午 08:04
    版主
  • (1) 小喵提到的 SQL injection , 很重要。不要使用串接字串的方法接整個 SQL 語法。

    了解 SQL Injection : 何謂 SQL injection,在此整理分享

    (2) 善用參數式查詢,微軟文件有詳細說明

    設定參數和參數資料類型


    SqlParameter 類別


    SqlCommand.Parameters 屬性



    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年10月31日 下午 02:02