【发布时间】:2011-04-21 02:20:43
【问题描述】:
我有一个 C# 应用程序,它的部分工作是将 Excel 文件中的所有数据插入数据库。
从 Excel 获取数据的工作没问题,我正在使用存储过程将数据插入到 DB 中的表中。
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 对象使用参数,则会自动处理转义。你真的不想开始为逃避不必要的争论承担责任。
-
您应该避免使用
sp_前缀命名存储的过程 - SQL Server 将在您的实际数据库之前搜索主数据库中的此类过程,因此如果 MS 在以后添加一个新的sp_过程,您的调用代码将被破坏。
标签: sql sql-server tsql