我試圖運行我認爲是一個相當簡單的參數化插入查詢,但遇到各種各樣的問題。 SQL EXPRESS 08R2,VB.net參數化插入查詢不起作用
這裏是VB代碼,構建參數... 更新的變量名:
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()
這裏是我試圖執行與插入的SP。
@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
有關如何更智能地編寫代碼的建議值得歡迎。
這是錯誤.... System.Data.SqlClient.SqlException:過程或函數usp_insertLangShortText指定的參數太多。 System.Data.SqlClient.SqlConnection.OnError(SqlException異常,布爾breakConnection)System.Data.SqlClient.SqlInternalConnection.OnError(SqlException異常,布爾breakConnection)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)在系統上System.Data.SqlClient上的System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)上的.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) .SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布爾returnStream,布爾異步)在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布爾returnStream,字符串方法,DbAsyncResult結果)在System.Data.SqlClient。 SqlCommand.InternalExecuteNonQuery(DbAsyncResult result,Str在System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand命令,DataSourceOperation操作)System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert()上System.Data.SqlClient.SqlCommand.ExecuteNonQuery()方法名,布爾sendToPipe IDictionary值)在System.Web.UI.WebControls.SqlDataSource.Insert()at par_importExcelDataPTS.GetRootID(String short_Text,Int32 string_id,String dbName,String Lang_code)在C:\ Users
撇號已全部轉義,文本字符串沒有沒有更新的撇號。我會嘗試更改@符號。 – htm11h
沒有運氣,更新的原始發佈。 – htm11h
嗯,例外有助於:由於某種原因,你的參數沒有做到這一點。我有兩個想法可能是因爲:1)設置InsertCommand時,參數會被清除;嘗試將它移動到設置參數的區域上方; 2)short_text是Nothing;在調試中進入代碼並確保設置了該值。 –