我正在尝试运行我认为是一个相当简单的参数化插入查询,但遇到了各种各样的问题。 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) System.Data.SqlClient上的System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,DbAsyncResult结果)中的.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async)。 SqlCommand.InternalExecuteNonQuery(DbAsyncResult结果,Str荷兰国际集团方法名,布尔sendToPipe)在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()在System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(的DbCommand命令,DataSourceOperation操作)在System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert( IDictionary的值)在System.Web.UI.WebControls.SqlDataSource.Insert()在par_importExcelDataPTS.GetRootID(字符串short_Text,的Int32 string_id,字符串DBNAME,字符串LANG_CODE)在C:\用户
答案 0 :(得分:2)
参数名称是否有特定原因,因为这可能导致您的问题:
c# - itemDataSource1.InsertParameters.Add("short_Text", short_Text)
SQL - @shrtText varchar(250)
不应该是:itemDataSource1.InsertParameters.Add("shrtText", short_Text)
答案 1 :(得分:0)
我相信您可能需要在添加参数名称前面添加@:
itemDataSource1.InsertParameters.Add("@short_Text", short_Text)
itemDataSource1.InsertParameters.Add("@foreignTable", foreignTable)
此外,如果您的short_text包含任何单引号,则SQL将无法评估。要解决此问题,请使用两个单引号替换short_Text中的所有单引号。
如果这不能解决您的问题,您是否可以发布您收到的确切错误消息?