Ошибка при вставке в Visual Basic .Net

#vb.net #oracle10g

#vb.net #oracle10g

Вопрос:

я пытаюсь выполнить вставку в свою базу данных и получаю сообщение об ошибке, это мой первый раз с VB.Net, так что любая помощь была бы с благодарностью принята.

Вот код:

 Sub InsertGestion(ByVal s As Object, ByVal e As EventArgs)
          Dim Records() As String
          Records = Split(TBComment.Text, vbCrLf)

          Dim record As Integer
          For record = 0 To UBound(Records)             
                oracleCommand = New OracleCommand("INSERT INTO ACTFIL (ACACCTG,ACACCT,ACACTDTE,ACSEQNUM,ACACCODE,ACRCCODE,ACCIDNAM,ACCOMM) values ('1','"   TBNum.text   "','"   TBFecha.Text   "',"  (record 1)  ",'" TBCodAc.text "','" TBCodRes.text "','" TBGestor.Text "','" record "')", oracleConexion)
          Try
                oracleConexion.Open()
                oracleCommand.ExecuteNonQuery()

            Catch ex As Exception
                status.Text = "ERROR al insertar la gestión  "   ex.Message   "'"  'amp; ex.Message
            Finally
                oracleConexion.Close()
                Response.Redirect("gestiones.aspx?credito="   Request.QueryString("credito")   "")
            End Try
          Next

        End Sub
  

И ошибка:

 FormatException: Input string was not in a correct format.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)  717374
   Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)  114

[InvalidCastException: Conversion from string "INSERT INTO ACTFIL (ACACCTG,ACAC" to type 'Double' is not valid.]
   Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)  717687
   ASP.marcador_gestiones_aspx.InsertGestion(Object s, EventArgs e) in G:vta-paqV2marcadorgestiones.aspx:62
   System.Web.UI.WebControls.Button.OnClick(EventArgs e)  115
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)  140
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)  29
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)  2981
  

Изначально это было обновление, и оно работало, я просто изменил OracleCommand.

Кстати, я замечаю, что это небезопасный способ выполнения запросов, если кто-нибудь может указать мне правильное направление, я был бы очень признателен.

Ответ №1:

Извлеките команду oracle из запроса и запустите на клиенте Oracle. Это даст вам знать, если с вашей командой oracle что-то не так.

Во-вторых, вы можете использовать string.format для формирования вашего запроса, а не использовать оператор .

Безопасный подход к обработке входных данных запроса заключается во входных параметрах. Вы можете проверить приведенные ниже ссылки.

http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleparameter.aspx

http://blogs.msdn.com/b/alextch/archive/2007/08/21/using-data-parameters-with-oracle-data-provider-for-net.aspx

Я надеюсь, что это поможет.

Спасибо!
Dhananjay

Комментарии:

1. Спасибо, используя эти примеры, я полностью переписал код, и теперь он работает и очищен. 🙂