存储过程中的表示参数(asp)

时间:2017-03-09 16:59:11

标签: sql-server tsql stored-procedures asp-classic

我在这里有一个存储过程:

USE [RK]
GO
/****** Object:  StoredProcedure [dbo].[PRC_THEKE_FRAGE_INSERT]    Script Date: 03/09/2017 17:43:34 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[PRC_THEKE_FRAGE_INSERT] @frage nvarchar(255),@status bit, @kategorieID tinyint, @sgi nvarchar(8)
AS

-- Neuen Datensatz speichern
INSERT INTO LLThekeFragen SELECT @frage, @status, @kategorieId, @sgi

此过程正常,除非我的数据中有变音符号。然后它搞砸了输入。例如,插入后它看起来像这样:

  

Begrüßung

这显然是错误的。我试着在这里查看MSDN-Page,这实际上描述了这个问题。但是,不在存储过程中。我还尝试将N'添加到我的变量中,但这显然会导致有一个字符串(而不是实际值)。

我目前对该表的字符集是:SQL_Latin1_General_CP1_CI_AS

我尝试将 frage 的类型更改为varchar(255),这没有帮助,再次删除了N' ..但没有做到这一点。在我的浏览器中检查数据时,SQL语句是正确的。它插入时很容易。

这就是我尝试在asp-classic

中插入数据的方法
SQL = "EXEC PRC_THEKE_FRAGE_INSERT '" & request("question") & "'," & request("active") & ", " & request("categoryID") & ", '" & request("sgi") & "'"
conn.execute SQL

(我知道,现在不要消毒,我不应该这样做。请不要告诉我们:))

更新

我实际的asp文件中的标题:

Very first line of my code:
<%@ LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>

in my <head>-area:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

使用我的存储过程文件:

'this indeed did the trick - had it in the wrong file
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>

<%
dim conn,SQL
set conn = Server.CreateObject("ADODB.Connection")

'open DB connection
conn.open "DSN=well;UID=rk;PWD=wellwell"

SQL = "EXEC PRC_THEKE_FRAGE_INSERT N'" & request("question") & "'," & request("active") & ", " & request("categoryID") & ", '" & request("sgi") & "'"
conn.execute SQL

conn.close()

%>

1 个答案:

答案 0 :(得分:3)

确保将其包含在页面的顶部。

<%@Language="VBScript" CodePage = 65001 %>
<% 
  Response.CharSet = "UTF-8"
  Response.CodePage = 65001
%>

或使用此处所述的包含文件:https://stackoverflow.com/a/21914278/2333499

<小时/> 使用带adVarWChar参数的参数化查询
或者打开你自己sql-injection,然后在连接字符串之前添加N

SQL = "EXEC PRC_THEKE_FRAGE_INSERT N'" & request("question") & "'," & request("active") & ", " & request("categoryID") & ", N'" & request("sgi") & "'"
conn.execute SQL