当我执行这个简单的插入查询时,为什么会出现这个异常?

本文关键字:为什么 异常 查询 执行 简单 插入 | 更新日期: 2023-09-27 17:53:01

我对执行插入查询的代码有一个问题(问题是当它试图执行查询时抛出异常):

_strSQL = "INSERT INTO Cpe ( DateAdded,  [Cpe] ";
strSQLParametri = " VALUES ( GETDATE(), @CPE ";
addParameter(command, "@CPE ", cpe.Cpe);

// [SourceId] insertion on the DB:
if (cpe.SourceId != null)
{
                _strSQL += ",[SourceId] ";
                strSQLParametri += ", @SOURCEID ";
                addParameter(command, "@SOURCEID ", cpe.SourceId);
}
// [vendor_id] insertion on the DB:
if (cpe.VendorId != null)
{
                _strSQL += ",[vendor_id] ";
                strSQLParametri += ", @VENDORID ";
                addParameter(command, "@VENDORID ", cpe.VendorId);
}
// [Title] insertion on the DB:
if (cpe.Title != null)
{
                _strSQL += ",[Title] ";
                strSQLParametri += ", @TITLE ";
                addParameter(command, "@TITLE ", cpe.Title);
}
// [part] insertion on the DB:
if (cpe.Part != null)
{
                _strSQL += ",[part] ";
                strSQLParametri += ", @PART ";
                addParameter(command, "@PART ", cpe.Part.ToString());
}
// [product_id] insertion on the DB:
if (cpe.ProductId != null)
{
                _strSQL += ",[product_id] ";
                strSQLParametri += ", @PRODUCTID";
                addParameter(command, "@PRODUCTID ", cpe.ProductId);
}
// [version] insertion on the DB:
if (cpe.Version != null)
{
                _strSQL += ",[version] ";
                strSQLParametri += ", @VERSION";
                addParameter(command, "@VERSION ", cpe.Version);
}
// [revision] insertion on the DB:
if (cpe.Revision != null)
{
               _strSQL += ",[revision] ";
                strSQLParametri += ", @REVISION";
                addParameter(command, "@REVISION ", cpe.Revision);
}
// [edition] insertion on the DB:
if (cpe.Edition != null)
{
                _strSQL += ",[edition] ";
                strSQLParametri += ", @EDITION";
                addParameter(command, "@EDITION ", cpe.Edition);
}
.... and so on ......
query = _strSQL + " ) " + strSQLParametri + " );";
command.CommandText = query;
_executeNoQuery(command);
newId = _getIdentity();
//Debug.WriteLine("Id: " + newId);
#endregion

这是获得的查询,看看调试器是什么(没有所有以前的字段,因为有人是空的,所以他们被跳过):

INSERT INTO Cpe (DateAdded, [Cpe], [SourceId], [vendor_id], [Title], [part], [product_id], [version])  
VALUES (GETDATE(), @CPE, @SOURCEID, @VENDORID, @TITLE, @PART, @PRODUCTID, @VERSION);

这是执行前一个查询时获得的异常:

ExecuteNonQuery terminato conerror。'r'nINSERT INTO Cpe (DateAdded, [Cpe],[SourceId],[vendor_id],[Title],[part],[product_id],[version]) VALUES (GETDATE(), @CPE, @SOURCEID, @VENDORID, @TITLE, @PART, @PRODUCTID, @VERSION);
字符串或二进制数据将被截断。

有什么问题吗?你知道我该怎么解决吗?

当我执行这个简单的插入查询时,为什么会出现这个异常?

错误消息String or binary data would be truncated.的这一部分表明您正在尝试将数据插入到太小的字段中。

检查你要插入的文本数据的长度,然后检查你要插入的字段的大小,确保它适合

检查传入的每个字符串值的长度。其中一个几乎肯定比要插入数据的列的长度长。