首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程(asp)中表示的参数

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

Stack Overflow用户
提问于 2017-03-09 16:59:10
回答 1查看 105关注 0票数 0

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

代码语言:javascript
复制
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

这个过程很好,除非我的数据中有数值。然后它就把输入弄乱了。例如,插入后如下所示:

圣保罗Ÿung

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

表的当前字符集是:SQL_Latin1_General_CP1_CI_AS

我尝试将frage的类型更改为varchar(255),这没有帮助,因此再次删除了N'。但什么也没起作用。在我的浏览器中检查数据时,SQL-语句是正确的。它应该在插入的时候。

这就是我尝试在asp-classic中插入数据的方式

代码语言:javascript
复制
SQL = "EXEC PRC_THEKE_FRAGE_INSERT '" & request("question") & "'," & request("active") & ", " & request("categoryID") & ", '" & request("sgi") & "'"
conn.execute SQL

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

更新

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

代码语言:javascript
复制
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" />

与我的存储过程一起存档:

代码语言:javascript
复制
'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()

%>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-09 17:07:35

确保将此内容包含在页面的最上面。

代码语言:javascript
复制
<%@Language="VBScript" CodePage = 65001 %>
<% 
  Response.CharSet = "UTF-8"
  Response.CodePage = 65001
%>

或者使用如下所述的包含文件:https://stackoverflow.com/a/21914278/2333499

使用带有adVarWChar参数的参数化查询

或者打开sql注入,在连接字符串之前添加N

代码语言:javascript
复制
SQL = "EXEC PRC_THEKE_FRAGE_INSERT N'" & request("question") & "'," & request("active") & ", " & request("categoryID") & ", N'" & request("sgi") & "'"
conn.execute SQL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42701189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档