簡體   English   中英

字符串或二進制數據將被截斷。 該語句已終止。 在數據庫表中插入記錄時

[英]String or binary data would be truncated. The statement has been terminated. while inserting records in DB table

我的用戶定義數據類型如下

CREATE TYPE [dbo].[CdeSecureList] AS TABLE
(
    [CardRefID] [int] NOT NULL,
    [KEY] [varchar](250) NOT NULL,
    [MIS_Field1] [varchar](60) NULL,
    [MIS_Field2] [varchar](60) NULL,
    [ValidatingCarrier] [varchar](2) NOT NULL,
    [OtherCarriers] [bit] NOT NULL,
    [Card Vendor] [varchar](2) NOT NULL,
    [Card] [varchar](266) NOT NULL,
    [Expiration] [date] NOT NULL,
    [Precedence] [int] NULL,
    [AlertEmail] [varchar](80) NULL,
    [maxTktAmt] [decimal](18, 2) NOT NULL,
    [IRP_remark] [bit] NOT NULL
)

在我的 C# 代碼中,我創建了一個數據表並確保數據類型與我的 SQL 表匹配

DataTable dtCloned = dtExcel.Clone();

try
{            
    dtCloned.Columns[0].DataType = typeof(Int32);
    dtCloned.Columns[1].DataType = typeof(string);
    dtCloned.Columns[2].DataType = typeof(string);
    dtCloned.Columns[3].DataType = typeof(string);
    dtCloned.Columns[4].DataType = typeof(string);
    dtCloned.Columns[5].DataType = typeof(Boolean);
    dtCloned.Columns[6].DataType = typeof(string);
    dtCloned.Columns[7].DataType = typeof(string);
    //dtCloned.Columns[8].DataType = typeof(DateTime);
    dtCloned.Columns[9].DataType = typeof(Int32);
    dtCloned.Columns[10].DataType = typeof(string);
    dtCloned.Columns[11].DataType = typeof(decimal);
    dtCloned.Columns[12].DataType = typeof(Boolean);

    foreach (DataRow row in dtExcel.Rows)
    {
        dtCloned.ImportRow(row);
    }
}

然而,在插入記錄時,我收到一個錯誤

字符串或二進制數據將被截斷。 該語句已終止

我明白這個錯誤意味着

原因:在表中插入記錄時,通常會遇到此錯誤,其中一列是 VARCHAR 或 CHAR 數據類型,並且插入的值的長度大於該列的長度。

但是我確保數據類型相同,所以為什么會出現錯誤。

我的假設是我的代碼中的第 5 行和第 12 行具有布爾值(兩種情況下的內容都是 True),但我的 SQL 數據類型是位,這是一個問題嗎? 我怎樣才能解決這個問題?

問題在於字符串,而不是布爾值。 有多種可能的原因:

  1. 您可能正在閱讀 Unicode 文本 - 在這種情況下,您應該使用NVarChar而不是VarChar
  2. 其中一個字符串比您為其分配的字段長。 您需要檢查您的數據以確保它可以存儲在可用空間中。

您需要檢查數據以了解哪一項適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM