вызов хранимой процедуры с апострофом в аргументе не работает - PullRequest
1 голос
/ 21 апреля 2011

У меня есть приложение на 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, я использую цикл для помещения аргументов встрока, являющаяся запросом.

1 Ответ

2 голосов
/ 21 апреля 2011

Вы можете избежать «ввода», поставив перед ним еще один, и вставка будет работать.Вы можете сделать это или проанализировать данные для таких символов и игнорировать их.Таким образом, ваш оператор вставки с этим экранированным будет:

sp_Insert N'1', N'Brand example', N'ABC123', N'123456-7890', N'Laptop', N'Director''s floor'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...