adoから送信された文字列に基づいて、データベース内の多くのテーブルを検索するSPを作成しました
Vb コード
Shared ReadOnly Property Connection() As String
Get
Return ConfigurationManager.ConnectionStrings("ConnString").ConnectionString
End Get
End Property
Function GetData(ByVal SearchKey As String) As DataTable
Dim sqlConn As New SqlConnection(Connection)
Dim ds As New DataSet
Dim sqlCmd As New SqlCommand("Search_List")
Dim sqlAdapter As New SqlDataAdapter
sqlCmd.CommandType = CommandType.StoredProcedure
sqlCmd.Connection = sqlConn
sqlAdapter.SelectCommand = sqlCmd
sqlCmd.Parameters.Add(New SqlParameter("@SearchKey", SqlDbType.NVarChar, 255, ParameterDirection.Input, True, CByte(0), CByte(0), "SearchKey", DataRowVersion.Default, SearchKey))
sqlCmd.Parameters.Add("RerurnValue", SqlDbType.Int)
sqlCmd.Parameters("RerurnValue").Direction = ParameterDirection.ReturnValue
Try
sqlConn.Open()
sqlAdapter.Fill(ds, "Result")
sqlConn.Close()
Catch ex As Exception
Exit Function
End Try
Return ds.Tables("Result")
End Function
SQL SP は次のとおりです。
ALTER PROCEDURE [dbo].[Search_List](
@SearchKey NVARCHAR(200)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Rc bigint
DECLARE @Err bigint
set @SearchKey = '%'+@SearchKey+'%'
CREATE
TABLE
#Temp
(
ID BIGINT,
elementType NVARCHAR(10),
NameAr NVARCHAR(255),
NAmeEn NVARCHAR(255),
DescAr NVARCHAR(MAX),
DescEn NVARCHAR(MAX),
URL NVARCHAR(MAX)
)
INSERT INTO #Temp
SELECT
Id
,'C'
,NameAr
,NameEn
,DescAr
,DescEn
,'Counsel.aspx'
FROM
CMS_Councils
Where
(NameAr like @SearchKey
OR
NameEn Like @SearchKey
OR
DescAr Like @SearchKey
OR
DescEn Like @SearchKey)
AND
isnull(Status,0) = 1
select * from #Temp
end
ご覧のとおり、VB で引数を Nvarchr として宣言し、SQL パラメータ@SearchKeyを Nvarchar として宣言しました。また、@SearchKey 検索で英語のデータを送信すると正しいデータが返されますが、@SearchKey でアラビア語の文字列を送信しようとすると、そこにあることを知っている結果が表示されませんでした。テーブル内のアラビア語データです
何か不足していますか?
アラビア語検索を許可するには、それ以上に何をすべきですか?