C# 如何使用存储过程参数在SQLServer中存储阿拉伯语?
我想使用存储过程和参数将阿拉伯语插入并更新到SQL Server中。我查了其他帖子,他们说你用NVARCHA100或N' 我的情况不同:我使用的是存储过程和参数,如何在参数@patient_Name_阿拉伯语前加N这是我的存储过程: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),
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。