Asp.net 如何使用阿拉伯语进行sql server 2005搜索?

Asp.net 如何使用阿拉伯语进行sql server 2005搜索?,asp.net,Asp.net,我有一个SQLServer2005数据库,其中一些表包含阿拉伯语文本。这些字段的数据类型为NVARCHAR(n) 表中的阿拉伯文本显示正确,当使用select子句选择时,它们显示正确。 问题是使用where子句搜索阿拉伯语文本会导致0行 从表名称中选择* 其中name=@name 这不会检索任何行,其中有具有此值的名称。 当我们像这样使用它时: 从表名称中选择* 其中name=N'Arabic_Text' 然后它工作了,但是我们如何将搜索文本从前端传递到后端。 你能指导我如何写这个查询吗 PS

我有一个SQLServer2005数据库,其中一些表包含阿拉伯语文本。这些字段的数据类型为NVARCHAR(n)

表中的阿拉伯文本显示正确,当使用select子句选择时,它们显示正确。 问题是使用where子句搜索阿拉伯语文本会导致0行

从表名称中选择* 其中name=@name

这不会检索任何行,其中有具有此值的名称。 当我们像这样使用它时:

从表名称中选择* 其中name=N'Arabic_Text'

然后它工作了,但是我们如何将搜索文本从前端传递到后端。 你能指导我如何写这个查询吗

PS

我在《代码隐藏》中写道:

Dim UserName As String = "N'" & txtLogin.Text & "'"
Dim _dtLogin As DataTable = oUser.UserLogin(UserName)

即使该用户存在于数据库中,它也会返回0行。

由于unicode值,您需要连接查询,并且需要使用N before值进行检查。

考虑到这一部分:
从表_name中选择*,其中name=@name

如果这是一个存储过程,则需要将其修改为:

select * from table_name where name=N@name

试试看,让我们知道它是否有效。

ya我已经试过了,但出现了以下错误:列名无效'N@UserName’我想你弄错了,如果你听从我的建议,这个错误就不会发生,你的错误在=号之前,而不是之后。请再次检查。我认为将输入参数声明为NVARCHAR应该返回正确的值。存储过程是否返回不带N(name=@name)的值?