2016-11-07 5 views
0

ich das folgende Stück Code in einer Windows-Form haben, aber ich erhalte eine FehlermeldungWinform SQL-Fehler

Die Überladungsauflösung, da keine zugänglich ‚ExecuteNonQuery‘ failed nimmt diese Anzahl von Argumenten

Ich habe gesucht und alles, was ich sehe, scheint sich auf die Anzahl der Parameter beziehen. Ich liefere die Nummer, die der Code erwartet (43), kann mir jemand in die richtige Richtung zeigen?

Public Class wfRecDB 
    Dim cn As New SqlConnection("Data Source=.;Initial Catalog=RecDb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;")  
    Dim cmd As New SqlCommand 
    Dim dr As SqlDataReader 

    Private Sub wfRecDB_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     cmd.Connection = cn 
    End Sub 

    Private Sub btnCon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCon.Click 
     If cbEnv.Text <> "" Then 
      cn.Open() 
      cmd.CommandText = "insert into recdb.recs.recdbextract (Environment,Unreconciled,Reconciled,Account,AcctRel,AccInc,AcctPro,Address,AssClass,BankAcc,BrkRel,CBNwork,CCTE,CIB,ClCont,ClCparty,ClFatca,ClFatcaDet,ExtRef,FamGp,FundLd,GenVar,IsaDec,LocStr,MPLocPat,MPOutPat,MPPatDet,MPPatHead,MPProdPat,NomAcc,NomAccLink,OutAssCl,OutMktCam,SippAcc,SippBCE,SippBenReq,SippLta,SippPaye,SippPenInc,SippRegPay,UnitPrice,UserGroups,UserPerms) values ('" & cbEnv.Text & "','" & rbUnreconciled.Text & "','" & rbReconciled.Text & "','" & cbAccount.Text & "', '" & cbAccountRelationship.Text & " ','" & cbAccountIncomeDistributionChoice.Text & "','" & cbAccountProfile.Text & "','" & cbAddress.Text & "','" & cbAssetClassification.Text & "','" & cbBankAccount.Text & "','" & cbBrokerRelationship.Text & "','" & cbClientBroker.Text & "','" & cbClientCorp.Text & "','" & cbClientInd.Text & "','" & cbClientContext.Text & "','" & cbClientCparty.Text & "','" & cbClientFATCA.Text & "','" & cbClientFATCADetails.Text & "','" & cbExtRefPlfmOne.Text & "','" & cbFamilyGroups.Text & "','" & cbFundLoader.Text & "','" & cbGenericVariables.Text & "','" & cbIsadec.Text & "','" & cbLocationStructure.Text & "','" & cbtbMPLocation.Text & "','" & cbMPOut.Text & "','" & cbPatDet.Text & "','" & cbPatHead.Text & "','" & cbProd.Text & "','" & cbNomAcc.Text & "','" & cbNomAccLink.Text & "','" & cbAssetClassification.Text & "','" & cbOutCam.Text & "','" & cbSIPPAcc.Text & "','" & cbSIPPBCE.Text & "','" & cbSIPPBen.Text & "','" & cbSIPPLTA.Text & "','" & cbSIPPPAYE.Text & "','" & cbSIPPPen.Text & "','" & cbSIPPReg.Text & "','" & cbUnitPrice.Text & "','" & cbUserGroups.Text & "','" & cbUserPerm.Text & "')" 
      cmd.ExecuteNonQuery("") 
      cn.Close() 
      cbEnv.Text = "" 
      rbUnreconciled.Text = "" 
      rbReconciled.Text = "" 
     End If 
    End Sub 
+3

[SQL-Injection-Warnung] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - Sie sollten ** nicht ** Ihre SQL-Anweisungen verketten - Verwenden Sie ** parametrisierte Abfragen ** statt SQL Injection zu vermeiden –

Antwort

3

Der Fehler ist sehr klar - es gibt keine Überlastung von ExecuteNonQuery() ist die einen einzigen String-Parameter nimmt, wie Sie hier liefern:

cmd.ExecuteNonQuery("") 

ExecuteNonQuery() erwartet keine Parameter - so einfach ändern diese Codezeile zu

cmd.ExecuteNonQuery() 

und Dir sollte es gut gehen.

+0

Prost, das hat funktioniert – user5367782

+0

@ user5367782: ausgezeichnet! Wenn diese Antwort Ihnen geholfen hat, Ihr Problem zu lösen, dann bitte [** akzeptiere diese Antwort **] (http://meta.stackoverflow.com/q/5234/153998). Dies wird Ihre Wertschätzung für die Menschen zeigen, die Ihre Zeit verbracht haben, um Ihnen zu helfen *. –