Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
在SQL Server 2016的一列中插入英文和阿拉伯文数据_Sql_Sql Server 2016 - Fatal编程技术网

在SQL Server 2016的一列中插入英文和阿拉伯文数据

在SQL Server 2016的一列中插入英文和阿拉伯文数据,sql,sql-server-2016,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

嗨,我想插入一个波斯语和英语的数据,我想插入的字符串是
'(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.


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

您的数据库只是在存储它接收到的内容,如果表设置为使用N种类型,它将在当前设置中存储所需的字符(因此也请检查)。更改应用程序代码以使用更宽的字符集。

必须更改应用程序代码,为Unicode文本添加
N
,或者使用SQL数据类型
nvarchar
的参数化查询。在服务器端,您无法单方面执行任何操作。另外,对于表示系统存储过程的用户存储过程,不要使用前缀
sp_uu
。@DanGuzman我如何从app中输入N不需要
N
参数化查询,因为.NET字符串是Unicode。截断错误是由于目标表列对于值来说太小。检查列的最大大小。如何从应用程序中输入n?请尝试以下操作:
cmd.Parameters.Add(“@title”,SqlDbType.NVarChar,100)。Value=TextBox1.Text.Trim()什么错误?你根据你的例子做了调整吗?此外,如果您正在编辑原始帖子,您应该显示编辑的位置,以便人们可以关注easierString,否则二进制数据将被截断。语句已终止。您没有像我说的那样更改参数添加,您应该尝试。使用add而不是addwithvalue。在add中,提供要使用的sqldbtype。add中的第三个参数是您希望用于nvarchar的长度,因此决定您希望它是什么
cmd.Parameters.Add(“@FirstName”,SqlDbType.NVarChar,500)。value=mmmm