错误 - 字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据

Posted

技术标签:

【中文标题】错误 - 字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据【英文标题】:Error - The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data 【发布时间】:2017-05-27 12:08:36 【问题描述】:
try
        
            string CSVFilePathName = textBox4.Text;
            for (int i = 0; i < CSVFilePathName.Length; i++)
            
                if (CSVFilePathName[i] == '\\')
                
                    CSVFilePathName.Insert(i + 1, "\\");
                
            
                if (string.IsNullOrWhiteSpace(textBox4.Text))
                
                    MessageBox.Show("Please Select a File");
                
                else
                
                    int count = 0;
                    // your code here 
                    // string CSVFilePathName = @"'" + textBox4.Text + "'";
                    string[] Lines = File.ReadAllLines(CSVFilePathName);
                    string[] Fields;
                    Fields = Lines[0].Split(new char[]  ',' );
                    int Cols = Fields.GetLength(0);
                    DataTable dt = new DataTable();
                    for (int i = 1; i < Lines.GetLength(0); i++)
                    
                        Fields = Lines[i].Split(new char[]  ',' );
                        for (int f = 0; f < Cols; f++)
                        
                            q = "SELECT * from questions where main_section='" + Fields[0] + "' AND secondary_section='" + Fields[1] + "' AND tert_section='" + Fields[2] + "' AND question='" + Fields[3] + "' AND difficulty='" + Fields[4] + "'";
                            OleDbCommand cmdn = new OleDbCommand(q, conn);
                            //MessageBox.Show(q);
                            object obj = cmdn.ExecuteScalar();
                            if (obj == null)
                            
                                q = "insert into questions values('" + Fields[0] + "','" + Fields[1] + "','" + Fields[2] + "','" + Fields[3] + "' ,'" + Fields[4] + "')";
                                OleDbCommand cmdn1 = new OleDbCommand(q, conn);
                                cmdn1.ExecuteNonQuery();
                            
                            else 
                            
                                count++;
                            
                            //MessageBox.Show(Fields[f]);
                        

                    
                    //  dataGridClients.DataSource = dt;
                    string msg = "Upload successful\n";
                    if (count > 0)
                    
                        msg=count.ToString()+" Questions missed due to their duplicates in the database.";
                    
                    MessageBox.Show(msg);
                

        
       catch (Exception ex)
       
           MessageBox.Show("Error is " + ex.ToString());
           throw;
       

我正在使用 c# winform 将 csv 文件上传到我的 ms 访问数据库,但它给出了错误“该字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据。”现在该怎么办?

【问题讨论】:

检查 Access 中的列设置以查看最大大小。根据 Access 的版本,限制是不同的。 我使用的是 access 2013,数据类型是长文本 所有字段都是长文本? 查看关注:support.office.com/en-us/article/… 欢迎您!看起来你是新来的提问者。如果您编辑问题并包含更多相关详细信息,您将在 Stack Overflow 上获得更好的帮助。在发布问题时包含示例数据是最有用的。如果共享实际数据不切实际,那么至少通过描述您尝试插入的文本字段的最大长度来总结它。其他人已经询问了 Access 字段的大小,但您得到的错误已经指出您需要检查字段,所以这将是一个很好的细节,可以包含在您的问题中。 【参考方案1】:

我建议在SQL中指定表格字段

INSERT INTO questions (fieldname1, fieldname2, ...) VALUES (...)

使用参数化值而不是直接在字符串中写入值。这也允许您指定数据类型,然后 ADO.Net OLE 适配器将有望适当地处理它并顺利插入长文本。转到 Read / Write BLOBs ... 以获取插入 BLOBS 的示例。概念和代码示例与插入长文本值非常相关。它演示了如何为查询设置参数。在您的情况下,请使用 OleDbType.LongVarWChar 作为长文本字段。

【讨论】:

以上是关于错误 - 字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据的主要内容,如果未能解决你的问题,请参考以下文章

OledbException - 字段太小而无法接受数据量

在 MS Access 2003 上出现错误 (3163)

插入Access数据库时发生错误,请联系开发人员.字段太小而不能接受所要添加的数据

Access ODBC 子表单字段太小而无法编辑

Django 迁移错误:您无法更改 M2M 字段或从 M2M 字段更改,或通过 = 在 M2M 字段上添加或删除

Odoo - 添加新字段时出错:ValidateError 验证字段拱时发生错误:视图架构的 XML 无效