如何通过使用存储过程参数在SQL Server中存储阿拉伯语?

时间:2019-02-03 18:48:39

标签: c# sql-server

我想通过使用存储过程和参数在SQL Server中插入和更新阿拉伯语。我检查了其他所有他们说您使用nvarchar(100)或使用N'الاسم العربي'的帖子。

我的情况有所不同:我正在使用存储过程和参数,如何将N放在参数@patient_Name_Arabic之前,这是我的存储过程:

ALTER PROCEDURE [dbo].[UPDATE_PATIENTS]
    @Patient_name VARCHAR(50),
    @Age INT,
    @Mobile VARCHAR(50),
    @Email VARCHAR(50),
    @Address VARCHAR(50),
    @Gender INT,
    @Patient_id VARCHAR(50),
    @Natid INT,
    @Patient_no INT,
    @insurance_card IMAGE,
    @ID_card IMAGE,
    @patient_Name_Arabic NVARCHAR(50)
AS 
    UPDATE [Patients]
    SET [Patient_Name] = @Patient_name, 
        [Age] = @Age,
        [Mobile] = @Mobile,
        [Email] = @Email,
        [Address] = @Email,
        [Gender] = @Gender,
        [Patient_id] = @Patient_id,
        [Natid] = @Natid,
        [insurance_card] = @insurance_card,
        [ID_card] = @ID_card,
        patient_Name_Arabic = @patient_Name_Arabic
    WHERE Patient_no = @Patient_no

我试图将N放在参数@patient_Name_Arabic之前,但是它不起作用。

N'@patient_Name_Arabic' or N"@patient_Name_Arabic" or N(@patient_Name_Arabic)

在我的案例中,存储阿拉伯语言的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我在我的c#应用程序中找到了下面的代码,该解决方案正在使用:

param[10] = new SqlParameter("@patient_Name_Arabic", SqlDbType.VarChar, 50);
            param[10].Value = patient_Name_Arabic;

我更改了SqlDbType.VarChar,50 到SqlDbType.NVarChar,50

param[10] = new SqlParameter("@patient_Name_Arabic", SqlDbType.NVarChar, 50);
            param[10].Value = patient_Name_Arabic;

及其正确的工作方式并保存了我之前在SQL Server的存储过程中尝试过的阿拉伯语言,我更改了应用程序代码,然后它也开始工作。 谢谢你的帮助