1
我在C#中有一个应用程序,当它的一部分工作是将所有数据从Excel文件插入数据库。调用带参数的撇号存储过程不起作用
从Excel中获取数据的工作是正常的,我正在使用存储过程将数据插入数据库中的表中。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[sp_Insert]
@id int,
@brand nvarchar(50),
@model nvarchar(50),
@prodNumber nvarchar(50),
@category nvarchar(50),
@local nvarchar(50)
AS
INSERT INTO Tbl_Registos (ID, Brand, Model, [Product Number], Category, Local)
VALUES (@id, @brand, @model, @prodNumber, @category, @local)
这是当SP完美的作品一个例子:
sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890',
N'Laptop', N'18'
问题是当我有这样的情况:
sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890',
N'Laptop', N'Director's floor'
当我有这个'
在中间争论。我想用引号[],但在有整数的情况下,我不能把它们放在引号之间。
从Excel中获得一行后,我使用循环将参数放入查询字符串中。
我知道你有一个公认的答案已经那肯定会的工作,但我很希望看到你是如何调用该SP。如果您针对SqlCommand对象使用参数,则会自动处理转义。你并不真的想开始承担逃避论据的责任,你不需要。 – 2011-04-21 05:01:13
您应该避免使用'sp_'前缀命名存储过程 - SQL Server将在您的实际数据库之前在主数据库中搜索此类过程,因此如果MS稍后添加新的'sp_'过程,您的调用代码将会被破坏。 – 2011-04-21 06:47:44
感谢提示特洛伊;) – Miguel 2011-04-22 15:31:06