2011-12-19 60 views
1
Try 
    If functionmode = "ADD" Then 
     SQLStr = "INSERT INTO boatmast VALUES ('" & gBoatType & "','" & TxtBoatCode.Text & "','" & TxtBoatName.Text & "','" & Format(txtBP.Text, "##0.#0") & "','" & Format(txtBPM.Text, "##0.#0") & "','" & Format(txtLDA.Text, "##0.#0") & "','" & , 'bpk', '" & Today & "', '" & updtime & "', 'bpk', '" & Today & "', '" & updtime & "')" 
    End If 
    conn.Open() 
    SQLCmd.Connection = conn 
    SQLCmd.CommandText = SQLStr 
    SQLCmd.ExecuteNonQuery() 
    conn.Close() 


Catch ex As OdbcException 
    MsgBox(ex.ToString) 
Finally 
    conn.Close() 
End Try 
+2

このコードは、SQLインジェクション攻撃に対して脆弱です。 –

+0

textbox.textの値をSQLに挿入すると、*本当に悪い考えです。 –

+0

編集する方法 –

答えて

4

問題はconn.Close()を2回呼び出したことです。最後のブロックにクローズ接続を保持します。

Try 

    If functionmode = "ADD" Then 
             //Supposed this is you columnNAmes              //Set parameters     
     SQLStr = "INSERT INTO boatmast (gBoatType,BoatCode,BoatName,BP, BPM,LDA,bpk,Today,updtime,bpk2,Today2,updtime2) VALUES (@gBoatType,@BoatCode,@BoatName,@BP, @BPM,@LDA,@bpk,@Today,@updtime,@bpk2,@Today2,@updtime2)" 

     SQLCmd.Parameters.AddWithValue("@gBoatType",gBoatType) 
     //DO OTHER STUFF TIL @updtime2    

    conn.Open() 
    SQLCmd.Connection = conn 
    SQLCmd.CommandText = SQLStr 
    SQLCmd.ExecuteNonQuery() 

    End If 
Catch ex As OdbcException 
    MsgBox(ex.ToString) 
Finally 
    If conn.State = ConnectionState.Open Then conn.Close() 
End Try 

よろしく

+0

確かに、あなたは 'Try'ブロックのものを削除するつもりですか? 'SQLCmd.ExecuteNonQuery()'が失敗すると、接続は決して閉じられません。 –

+0

それから...最後にブロックに置いて..先生。私は自分の投稿を編集しました。 – BizApps

+0

何も変わっていない –