在SQL Server 2016的一栏中以英语和阿拉伯语插入数据

时间:2018-07-25 12:29:00

标签: sql sql-server-2016

嗨,我想插入波斯语和英语的数据,我要插入的字符串是'(پایه ۱۹۸=OID) -عبوری-متوسط' 但它显示??????而不是数据...我想按存储过程插入数据我的存储过程是

USE [DAT1]
GO
/****** Object:  StoredProcedure [dbo].[SP_insert]    Script Date: 7/25/2018 3:32:46 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON

SET ANSI_WARNINGS off;
GO

ALTER proc [dbo].[SP_insert]
@FirstName nvarchar(256) = null,
@LastName  nvarchar(50),
@EmailAddress nvarchar (50),
@phone int  
as
begin 
insert into [tbl_test ] values (@FirstName,@LastName,@EmailAddress,@phone)

end 

当我使用N执行过程时,它可以工作,但是数据来自应用程序,我不能放N

在ADO.net中,我要在此处插入数据是我的代码

  protected void Button1_Click(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("SP_insert", con);
        cmd.CommandType = CommandType.StoredProcedure;


        string mmmm = "(پایه 198=OID) -عبوری-متوسط";
        cmd.Parameters.AddWithValue("@FirstName", mmmm);
        cmd.Parameters.AddWithValue("@LastName", "ascascsacsa");
        cmd.Parameters.AddWithValue("@EmailAddress", "advadsvasdv");
        cmd.Parameters.AddWithValue("@phone", 1);
        cmd.ExecuteNonQuery();

    }

执行代码时显示错误

String or binary data would be truncated.
The statement has been terminated.


我该如何解决这个问题:)

1 个答案:

答案 0 :(得分:1)

您的数据库仅存储它要接收的内容,并且如果表设置为使用N种类型(也请检查),它将存储所需的字符,并且与您当前的设置完全一样。更改您的应用程序代码以使用更广泛的字符集。