在Visual Basic .Net上插入时出错

时间:2011-05-04 01:04:18

标签: 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 + "'"  '& 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-paqV2\marcador\gestiones.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 个答案:

答案 0 :(得分:2)

从查询中提取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