简体   繁体   中英

Send Unicode String From C# To SQL Server 2008 DB

I want to send some unicode strings (for example "ش") to my SQL DataBase stored procedure. and my code is :

SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Khane;Integrated Security=True");

SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.Text; 



command.CommandText = s;
connection.Open();



SqlDataReader reader = command.ExecuteReader();

while (reader.Read())
{
Common.CommonPersonSerchResult res = new Common.CommonPersonSerchResult();

res.ID = (int)reader.GetValue(0);
res.FirstName = reader.GetValue(1).ToString();
res.LastName = reader.GetValue(2).ToString();
res.FatherName = reader.GetValue(3).ToString();
res.NationalCode = (int)reader.GetValue(4);
res.ShenasnameCode = (int)reader.GetValue(5);
res.BirthDate = reader.GetValue(6).ToString();
res.State = reader.GetValue(7).ToString();
res.City = reader.GetValue(8).ToString();
res.PostalCode = (int)reader.GetValue(10);
res.SportType = reader.GetValue(11).ToString();
res.SportStyle = reader.GetValue(12).ToString();
res.RegisterType = reader.GetValue(13).ToString();
res.Ghahremani = reader.GetValue(14).ToString();

SerchResult.Add(res);

}

connection.Close();

But I can't see any results but I know There is some rows can be show

this is my stored procedure:

USE [Khane]
GO
/****** Object:  StoredProcedure [dbo].[QuickSerch]    Script Date: 10/19/2011 18:31:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[QuickSerch] 
@item nvarchar(300)
AS
BEGIN    
select * from PersonsDataTbl 
where 
Name like '%@item%' or 
LastName like '%@item%' or
FatherName like '%@item%' or
NationalCode like '%@item%' or
ShenasnameCode like '%@item%' or
BirthDate like '%@item%' or
State like '%@item%' or
City like '%@item%' or
Address like '%@item%' or
PostalCode like '%@item%' or
SportType like '%@item%' or
SportStyle like '%@item%' or
RegisterType like '%@item%' or
Ghahremani like '%@item%' 
END

Your stored procedure code should be:

LIKE '%' + @item + '%'

Otherwise you're looking for values that contain the literal string "@item".

Also, be aware that your code isn't likely to perform very well if you have a large number of rows in your table. Between the OR statements and the leading wildcards it won't be able to make use of any indexes. You might want to look into fulltext searching.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM