【发布时间】:2016-05-24 11:50:08
【问题描述】:
我在 sql server 2008 中创建了一个表,其中一个列的数据类型为 varbinary(MAX)。使用 C# 代码我尝试插入一个 pdf 文件(18000 字节),但它给出错误“字符串或二进制数据会被截断"
我经历了很多线程,答案是因为列大小小于数据大小。但是 Varbinary(MAX) 的最大大小是 2GB。我需要帮助
CREATE TABLE [dbo].[Purchase_Order] (
[PO_Number] VARCHAR (25) NOT NULL,
[Organization_Name] VARCHAR (10) NOT NULL,
[PO_Date] DATE NOT NULL,
[Value_Amount] NUMERIC(8, 2) NOT NULL,
[Currency_Type] NVARCHAR (10) NOT NULL,
[Customer_Name] VARCHAR (50) NOT NULL,
[Contact_Person] VARCHAR (50) NOT NULL,
[Customer_Location] VARCHAR (20) NOT NULL,
[End_Date] DATE NOT NULL,
[Emug_Contact_Person] VARCHAR (50) NOT NULL,
[Payment_Terms] NUMERIC (3) NOT NULL,
[Project_Type] NCHAR (10) NOT NULL,
[File_Name] VARBINARY (MAX) NOT NULL,
CHECK ([PO_Number]<>''),
CHECK ([Organization_Name]<>''),
CHECK ([PO_Date]<>''),
CHECK ([Value_Amount]<>(0)),
CHECK ([Currency_Type]<>''),
CHECK ([Customer_Name]<>''),
CHECK ([Contact_Person]<>''),
CHECK ([Customer_Location]<>''),
CHECK ([End_Date]<>''),
CHECK ([Emug_Contact_Person]<>''),
CHECK ([Payment_Terms]<>''),
CHECK ([Project_Type]<>''),
);
这是我的插入代码
public int Insertcommand(string tablename, string[] columlist, object[] valuelist)
{
int x = 0;
string commandstring = createcommand(tablename, columlist);
MyCommand = new SqlCommand(commandstring, GetConnection());
for (int i = 0; i < valuelist.Count(); i++)
{
MyCommand.Parameters.AddWithValue("@" + columlist[i].ToLower(), valuelist[i]);
}
x = MyCommand.ExecuteNonQuery();
return x;
}
我的命令字符串
qry = "INSERT into Purchase_Order (PO_Number, Organization_Name, PO_Date, Value_Amount, Currency_Type, Customer_Name, Contact_Person, Customer_Location, End_Date, Emug_Contact_Person, Payment_Terms, Project_Type, File_Name) VALUES (@po_number, @organization_name, @po_date, @value_amount, @currency_type, @customer_name, @contact_person, @customer_location, @end_date, @emug_contact_person, @payment_terms, @project_type, @file_name)"
【问题讨论】:
-
你能显示表定义和你的SQL语句吗?
-
@PatrickHofman 我添加了表定义
-
文件名为什么会比较多,如果只是个名字不应该是
VARCHAR(MAX)? -
您确定是
File_Name列有截断问题吗?请向我们展示您产生错误的代码。 -
Onsite-Domestic是项目类型吗?如果是,则由于其长度而发生此错误NCHAR(10)
标签: c# sql sql-server