J'essaie de lancer ce que je pensais être une requête d'insertion paramétrée plutôt simple, mais je rencontre toutes sortes de problèmes. SQL EXPRESS 08R2, VB.netLa requête d'insertion paramétrée ne fonctionne pas
Voici le code VB qui construit les paramètres ... MISES À JOUR Les noms de variables:
itemDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings("MyConnectionString").ToString()
itemDataSource1.InsertCommandType = SqlDataSourceCommandType.StoredProcedure
itemDataSource1.InsertParameters.Add("@short_Text", short_Text)
itemDataSource1.InsertParameters.Add("@foreignTable", foreignTable)
itemDataSource1.InsertCommand = "usp_insertLangShortText" ' Call stored procedure
'***********************************************************************
' Begin the insertion. Check for errors during insert process.
Dim rowsAffected As Integer = 0
rowsAffected = itemDataSource1.Insert()
Et voici le SP que je suis en train de réaliser l'insert avec.
@short_Text varchar(250),
@foreignTable varchar(250)
AS
/* SET NOCOUNT ON */
DECLARE @sql varchar(max);
BEGIN
SET @sql = 'INSERT INTO ' + @foreignTable + ' (short_Text) VALUES (''' + @short_Text + ''')';
END
print (@sql)
EXECUTE(@sql);
SET @sql = ''
RETURN
Toutes les suggestions sur la façon de coder ceci plus intelligemment sont les bienvenues.
Voici l'erreur .... System.Data.SqlClient.SqlException: Procédure ou fonction usp_insertLangShortText a trop d'arguments spécifiés. à System.Data.SqlClient.SqlConnection.OnError (Exception SqlException, Boolean breakConnection) à System.Data.SqlClient.SqlInternalConnection.OnError (Exception SqlException, Boolean breakConnection) à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) à System .Data.SqlClient.TdsParser.Run (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) à System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, runBehavior runBehavior, String resetOptionsString) à System.Data.SqlClient .SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean asynchrone) à System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, méthode String, résultat DbAsyncResult) à System.Data.SqlClient. SqlCommand.InternalExecuteNonQuery (résultat DbAsyncResult, Str ing methodName, Boolean sendToPipe) à System.Data.SqlClient.SqlCommand.ExecuteNonQuery() à System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand (commande DbCommand, opération DataSourceOperation) à System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert (Valeurs IDictionary) à System.Web.UI.WebControls.SqlDataSource.Insert() à par_importExcelDataPTS.GetRootID (String short_Text, Int32 string_id, String nom_bd, String nom_langue) dans C: \ Users
Les apostrophes ont toutes été échappées, les chaînes de texte n'ont pas d'apostrophes qui ne sont pas mises à jour. Je vais essayer de changer les signes @. – htm11h
pas de chance, mise à jour orig post. – htm11h
Ah, l'exception aide: pour une raison quelconque votre paramètre ne le fait pas.J'ai deux idées sur pourquoi cela pourrait être: 1) Les paramètres sont effacés lorsque vous définissez InsertCommand; essayez de le déplacer au-dessus de la zone où les paramètres sont définis; 2) short_text est Nothing; étape dans le code dans le débogage et assurez-vous que cette valeur est définie. –