Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用存储过程参数在SQLServer中存储阿拉伯语?_C#_Sql Server - Fatal编程技术网

C# 如何使用存储过程参数在SQLServer中存储阿拉伯语?

C# 如何使用存储过程参数在SQLServer中存储阿拉伯语?,c#,sql-server,C#,Sql Server,我想使用存储过程和参数将阿拉伯语插入并更新到SQL Server中。我查了其他帖子,他们说你用NVARCHA100或N' 我的情况不同:我使用的是存储过程和参数,如何在参数@patient_Name_阿拉伯语前加N这是我的存储过程: ALTER PROCEDURE [dbo].[UPDATE_PATIENTS] @Patient_name VARCHAR(50), @Age INT, @Mobile VARCHAR(50), @Email VARCHAR(50),

我想使用存储过程和参数将阿拉伯语插入并更新到SQL Server中。我查了其他帖子,他们说你用NVARCHA100或N'

我的情况不同:我使用的是存储过程和参数,如何在参数@patient_Name_阿拉伯语前加N这是我的存储过程:

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
我试图在参数@patient_Name_阿拉伯语前加上N,但它不起作用

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

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

我发现我在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的存储过程中尝试过的阿拉伯语,我更改了应用程序代码,然后它也工作了。
感谢您的帮助

对于unicode字符,请使用NVARCHAR作为数据类型。N仅用于表示unicode字符串的字符串文字。存储过程参数已经是nvarchar Unicode,因此只要表列是nvarchar并且您传递了Unicode值,就会存储Unicode字符。请阅读:您已经声明了varchar类型的参数,sql引擎试图满足您的请求在声明参数Side时使用NVarchar50而不是Varchar50注意:图像数据类型将在sql Server的未来版本中删除。避免在新的开发工作中使用此数据类型,并计划修改当前使用它的应用程序。改用varbinarymax。